运行在Eclipse环境下的java扫雷游戏的初级代码是什么?

Python016

运行在Eclipse环境下的java扫雷游戏的初级代码是什么?,第1张

import java.awt.Button\x0d\x0aimport java.util.Set\x0d\x0a// 每一个方块类\x0d\x0apublic class Diamond extends Button {\x0d\x0aprivate Diamond[] diamonds\x0d\x0a\x0d\x0a// 该小方块周围的八个方向上的小方块\x0d\x0aprivate Diamond east\x0d\x0aprivate Diamond north\x0d\x0aprivate Diamond northEast\x0d\x0aprivate Diamond northWest\x0d\x0aprivate Diamond south\x0d\x0aprivate Diamond southEast\x0d\x0aprivate Diamond southWest\x0d\x0aprivate Diamond west\x0d\x0a\x0d\x0aprivate boolean isBomb// 是否是雷\x0d\x0aprivate boolean isChange// 又没有被翻过\x0d\x0aprivate int no// 产生的方块的编号\x0d\x0a\x0d\x0a// 持有所有小方块的引用,方便进行操作\x0d\x0apublic Diamond(Diamond[] diamonds) {\x0d\x0athis.diamonds = diamonds\x0d\x0a}\x0d\x0a\x0d\x0a// 按键时方块发生改变\x0d\x0apublic boolean change() {\x0d\x0athis.isChange = true// 说明已经翻过了\x0d\x0aif(isBomb) {// 触雷\x0d\x0a//this.setBackground(Color.red)\x0d\x0areturn true\x0d\x0a} else {// 不是雷,就显示周围雷的数目\x0d\x0a//this.setLabel(this.getNearBombNo() + "")\x0d\x0athis.setLabel(this.getNearBombNo() + "")\x0d\x0a//if(this.getNearBombNo() == 0) {\x0d\x0a//this.moveon()\x0d\x0a//}\x0d\x0areturn false\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a// 获得该小方块周围雷的数量\x0d\x0apublic int getNearBombNo() {\x0d\x0aint no = 0\x0d\x0aif(this.northWest != null &&this.northWest.isBomb) no++\x0d\x0aif(this.north != null &&this.north.isBomb) no++\x0d\x0aif(this.northEast != null &&this.northEast.isBomb) no++\x0d\x0aif(this.east != null &&this.east.isBomb) no++\x0d\x0aif(this.southEast != null &&this.southEast.isBomb) no++\x0d\x0aif(this.south != null &&this.south.isBomb) no++\x0d\x0aif(this.southWest != null &&this.southWest.isBomb) no++\x0d\x0aif(this.west != null &&this.west.isBomb) no++\x0d\x0a\x0d\x0areturn no\x0d\x0a}\x0d\x0a\x0d\x0a// 获得该小方块周围的小方块\x0d\x0apublic Diamond getNearDimaond(int i) {\x0d\x0aint index = -1\x0d\x0aswitch (i) {\x0d\x0acase 1:// 1表示西北,2,表示北,以此类推\x0d\x0aindex = no - 10\x0d\x0aif(index return null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 2:\x0d\x0aindex = no - 9\x0d\x0aif(index return null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 3:\x0d\x0aindex = no - 8\x0d\x0aif(index return null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 4:\x0d\x0aindex = no + 1\x0d\x0aif(no == 9 || no == 18 || no == 27 || no == 36 || no == 45 || no == 54 || no == 63 || no == 72 || no == 81) {\x0d\x0areturn null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 5:\x0d\x0aindex = no + 10\x0d\x0aif(index >= 81 ||no == 9 || no == 18 || no == 27 || no == 36 || no == 45 || no == 54 || no == 63 || no == 72 || no == 81) {\x0d\x0areturn null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 6:\x0d\x0aindex = no + 9\x0d\x0aif(index >81) {\x0d\x0areturn null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 7:\x0d\x0aindex = no + 8\x0d\x0aif(index >= 81 || no==1 || no == 10 || no == 19 || no == 28 || no == 37 || no == 46 || no == 55 || no == 64 || no == 73) {\x0d\x0areturn null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 8:\x0d\x0aindex = no - 1\x0d\x0aif(no==1 || no==10 || no == 19 || no == 28 || no == 37 || no == 46 || no == 55 || no == 64 || no == 73) {\x0d\x0areturn null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0a}\x0d\x0areturn null\x0d\x0a}\x0d\x0a\x0d\x0a// 递归,set是用来装已经翻过的小方块的,不然会死循环,为什么用set,因为set是不重复的\x0d\x0apublic void moveon(Set set) {\x0d\x0a\x0d\x0aset.add(this)// 先把自己加上\x0d\x0aif(this.getNorthWest() != null &&this.getNorthWest().isBomb == false) {\x0d\x0athis.getNorthWest().change()\x0d\x0a\x0d\x0aif(this.getNorthWest().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getNorthWest()) == false)\x0d\x0athis.getNorthWest().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getNorthWest())\x0d\x0a}\x0d\x0a\x0d\x0aif(this.getNorth() != null &&this.getNorth().isBomb == false) {\x0d\x0athis.getNorth().change()\x0d\x0aif(this.getNorth().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getNorth()) == false)\x0d\x0athis.getNorth().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getNorth())\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getNorthEast() != null &&this.getNorthEast().isBomb == false) {\x0d\x0athis.getNorthEast().change()\x0d\x0aif(this.getNorthEast().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getNorthEast()) == false)\x0d\x0athis.getNorthEast().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getNorthEast())\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getEast() != null &&this.getEast().isBomb == false) {\x0d\x0athis.getEast().change()\x0d\x0aif(this.getEast().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getEast()) == false)\x0d\x0athis.getEast().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getEast())\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getSouthEast() != null &&this.getSouthEast().isBomb == false) {\x0d\x0athis.getSouthEast().change()\x0d\x0aif(this.getSouthEast().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getSouthEast()) == false)\x0d\x0athis.getSouthEast().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getSouthEast())\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getSouth() != null &&this.getSouth().isBomb == false) {\x0d\x0athis.getSouth().change()\x0d\x0aif(this.getSouth().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getSouth()) == false)\x0d\x0athis.getSouth().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getSouth())\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getSouthWest() != null &&this.getSouthWest().isBomb == false) {\x0d\x0athis.getSouthWest().change()\x0d\x0aif(this.getSouthWest().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getSouthWest()) == false)\x0d\x0athis.getSouthWest().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getSouthWest())\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getWest() != null &&this.getWest().isBomb == false) {\x0d\x0athis.getWest().change()\x0d\x0aif(this.getWest().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getWest()) == false)\x0d\x0athis.getWest().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getWest())\x0d\x0a} \x0d\x0a}\x0d\x0a\x0d\x0a/*public Diamond[] getDiamonds() {\x0d\x0areturn diamonds\x0d\x0a}*/\x0d\x0a\x0d\x0apublic Diamond getEast() {\x0d\x0areturn east\x0d\x0a}\x0d\x0a\x0d\x0apublic int getNo() {\x0d\x0areturn no\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getNorth() {\x0d\x0areturn north\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getNorthEast() {\x0d\x0areturn northEast\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getNorthWest() {\x0d\x0areturn northWest\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getSouth() {\x0d\x0areturn south\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getSouthEast() {\x0d\x0areturn southEast\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getSouthWest() {\x0d\x0areturn southWest\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getWest() {\x0d\x0areturn west\x0d\x0a}\x0d\x0a\x0d\x0apublic boolean isBomb() {\x0d\x0areturn isBomb\x0d\x0a}\x0d\x0a\x0d\x0apublic boolean isChange() {\x0d\x0areturn isChange\x0d\x0a}\x0d\x0a\x0d\x0apublic void setBomb(boolean isBomb) {\x0d\x0athis.isBomb = isBomb\x0d\x0a}\x0d\x0a\x0d\x0apublic void setChange(boolean isChange) {\x0d\x0athis.isChange = isChange\x0d\x0a}\x0d\x0a\x0d\x0apublic void setDiamonds(Diamond[] diamonds) {\x0d\x0athis.diamonds = diamonds\x0d\x0a}\x0d\x0a\x0d\x0apublic void setEast(Diamond east) {\x0d\x0athis.east = east\x0d\x0a}\x0d\x0a\x0d\x0apublic void setNo(int no) {\x0d\x0athis.no = no\x0d\x0a}\x0d\x0a\x0d\x0apublic void setNorth(Diamond north) {\x0d\x0athis.north = north\x0d\x0a}\x0d\x0a\x0d\x0apublic void setNorthEast(Diamond northEast) {\x0d\x0athis.northEast = northEast\x0d\x0a}\x0d\x0a\x0d\x0apublic void setNorthWest(Diamond northWest) {\x0d\x0athis.northWest = northWest\x0d\x0a}\x0d\x0a\x0d\x0apublic void setSouth(Diamond south) {\x0d\x0athis.south = south\x0d\x0a}\x0d\x0a\x0d\x0apublic void setSouthEast(Diamond southEast) {\x0d\x0athis.southEast = southEast\x0d\x0a}\x0d\x0a\x0d\x0apublic void setSouthWest(Diamond southWest) {\x0d\x0athis.southWest = southWest\x0d\x0a}\x0d\x0a\x0d\x0apublic void setWest(Diamond west) {\x0d\x0athis.west = west\x0d\x0a}\x0d\x0a\x0d\x0a}

int BombNum, BlockNum// 当前雷数,当前方块数

int rightBomb, restBomb, restBlock// 找到的地雷数,剩余雷数,剩余方块数

JButton start = new JButton(" 开始 ")

JPanel MenuPamel = new JPanel()//新建一个区域,看名字是放菜单.但是打错字了.

JPanel bombPanel = new JPanel()//新建一个区域,雷区,由于雷是按钮,这里面应该都是按钮(JButton).

Bomb[][] bombButton 2维组数,放地雷.

class Bomb extends JButton {

int num_x, num_y// 第几号方块

int BombRoundCount// 周围雷数

boolean isBomb// 是否为雷

boolean isClicked// 是否被点击

int BombFlag// 探雷标记

boolean isRight// 是否点击右键

public Bomb(int x, int y) {

num_x = x //雷的位置 x,不解释

num_y = y //雷的位置 y,不解释.获得是参数的值,所new Bomb的时候传入雷的位置,套嵌2个for循环.

BombFlag = 0 //是不是被插旗了

BombRoundCount = 9 //环绕数

isBomb = false//是雷

isClicked = false //被点

isRight = false//是真的.( 以上都很好理解,直译^_^)

}

}

/* 计算方块周围雷数 */

public void CountRoundBomb() {

for (int i = 0i <(int) Math.sqrt(BlockNum)i++) {//开方 障碍数

for (int j = 0j <(int) Math.sqrt(BlockNum)j++) { //同上,我判断,设计的雷区是正方形,

//这里是找完所有的坐标.

int count = 0

// 当需要检测的单元格本身无地雷的情况下,统计周围的地雷个数

if (bombButton[i][j].isBomb != true) { //如果不是雷

for (int x = i - 1x <i + 2x++) { //从左边1个,到右边1个,一共3个

for (int y = j - 1y <j + 2y++) {//我不知道,java y坐标是上还是下,总之

//邻近的上中下.(这里会多找一个自己)

if ( (x >= 0) &&(y >= 0)

&&(x <( (int) Math.sqrt(BlockNum)))

&&(y <( (int) Math.sqrt(BlockNum)))) { //因边前面 x=i-1,所以排除超出边界

//的情况

if (bombButton[x][y].isBomb == true) { //如果是雷

count++ //加一个

}

}

}

}

bombButton[i][j].BombRoundCount = count //设置该Bomb环绕数的值

}

}

}

}

总之就是,建个一个Bomb类. 别外有一个方法统计那些不是雷的地方,的周围有几颗雷,到时候点开,显示出来.