扫雷算法布置数字
public static void computeBomb(MineLable lable[][]) {
for (int i = 0; i < lable.length; i++) { //i控制扫雷的行数
for (int j = 0; j < lable[i].length; j++) { //j控制扫雷的列数
if (lable[i][j].isMineTag() == false) { //如果lable[i][j]的位置不是雷
int count = 0; //将计数器置为0
for (int x = Math.max(0, i - 1); x <= Math.min(StaticTool.allrow - 1, i + 1); x++) { //计算x的偏移量
for (int y = Math.max(0, j - 1); y <= Math.min(StaticTool.allcol - 1, j + 1); y++) { //计算y的偏移量
//x、y的坐标是包围在label[i][j]外面的位置,包括label[i][j].
if (lable[x][y].isMineTag() == true) { //如果lable[i][j]周围位置lable[x][y]是雷
count++; //计数器加1.
}
}
}
lable[i][j].setCounAround(count); //将数字放进雷周围的位置。
}
}
}
}
详细解释
public class Test {
public static int allcol = 9;
public static int allrow = 9;
public static void computeBomb() {
for (int i = 0; i < allrow ; i++) { //i控制扫雷的行数
for (int j = 0; j < allcol; j++) { //j控制扫雷的列数
System.out.println(\"i=\"+i+\"\\t\"+\"j=\"+j); //打印出当前位置
for (int x = Math.max(0, i - 1); x <= Math.min(allrow - 1, i + 1); x++) {
for (int y = Math.max(0, j - 1); y <= Math.min(allcol - 1, j + 1); y++) {
System.out.println(\"(\"+x+\"-\"+y+\")\"); //打印出周围的位置
}
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
computeBomb();
}
}
结果如下:
i=0 j=0
(0-0)(0-1)
(1-0)(1-1)
i=0 j=1
(0-0)(0-1)(0-2)
(1-0)(1-1)(1-2)
i=0 j=2
(0-1)(0-2)(0-3)
(1-1)(1-2)(1-3)
i=0 j=3
(0-2)(0-3)(0-4)
(1-2)(1-3)(1-4)
i=0 j=4
(0-3)(0-4)(0-5)
(1-3)(1-4)(1-5)
i=0 j=5
(0-4)(0-5)(0-6)
(1-4)(1-5)(1-6)
i=0 j=6
(0-5)(0-6)(0-7)
(1-5)(1-6)(1-7)
i=0 j=7
(0-6)(0-7)(0-8)
(1-6)(1-7)(1-8)
i=0 j=8
(0-7)(0-8)
(1-7)(1-8)
i=1 j=0
(0-0)(0-1)
(1-0)(1-1)
(2-0)(2-1)
i=1 j=1
(0-0)(0-1)(0-2)
(1-0)(1-1)(1-2)
(2-0)(2-1)(2-2)
i=1 j=2
(0-1)(0-2)(0-3)
(1-1)(1-2)(1-3)
(2-1)(2-2)(2-3)
i=1 j=3
(0-2)(0-3)(0-4)
(1-2)(1-3)(1-4)
(2-2)(2-3)(2-4)
i=1 j=4
(0-3)(0-4)(0-5)
(1-3)(1-4)(1-5)
(2-3)(2-4)(2-5)
i=1 j=5
(0-4)(0-5)(0-6)
(1-4)(1-5)(1-6)
(2-4)(2-5)(2-6)
i=1 j=6
(0-5)(0-6)(0-7)
(1-5)(1-6)(1-7)
(2-5)(2-6)(2-7)
i=1 j=7
(0-6)(0-7)(0-8)
(1-6)(1-7)(1-8)
(2-6)(2-7)(2-8)
…
参考
算法参考
[1]:https://blog.csdn.net/huihang9139/article/details/78089583
java扫雷程序参考
[2]:https://download.csdn.net/download/qq_36972185/10869759
[3]:https://github.com/lxf44944/minesweeper_java
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。




