请用JAVA实现以下功能,用数组实现随机布雷(SetMine.java) 编程要求:在N*N的二维表格中实现随机布雷,布雷个数M预先定义。如果是雷显示字符@,如果不是雷,显示本格周围8格中雷的数目。 要求如下: (1) Block类: boolean isMine表示是不是雷,int num表示周围雷的个数。 (2)用三重循环实现周围雷个数的统计。
时间: 2023-12-10 22:36:55 浏览: 142
以下是实现随机布雷的代码,其中包含Block类和SetMine类:
```
public class Block {
private boolean isMine;
private int num;
public Block(boolean isMine, int num) {
this.isMine = isMine;
this.num = num;
}
public boolean isMine() {
return isMine;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public void setMine(boolean mine) {
isMine = mine;
}
}
public class SetMine {
public static void main(String[] args) {
int n = 10; // 定义二维表格大小
int m = 20; // 定义雷的个数
Block[][] blocks = new Block[n][n]; // 定义二维数组
// 初始化二维数组
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
blocks[i][j] = new Block(false, 0);
}
}
// 随机布雷
int count = 0;
while (count < m) {
int x = (int) (Math.random() * n);
int y = (int) (Math.random() * n);
if (!blocks[x][y].isMine()) {
blocks[x][y].setMine(true);
count++;
}
}
// 统计周围雷的个数
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (blocks[i][j].isMine()) {
continue;
}
int num = 0;
for (int k = i - 1; k <= i + 1; k++) {
for (int l = j - 1; l <= j + 1; l++) {
if (k >= 0 && k < n && l >= 0 && l < n && blocks[k][l].isMine()) {
num++;
}
}
}
blocks[i][j].setNum(num);
}
}
// 输出二维数组
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (blocks[i][j].isMine()) {
System.out.print("@ ");
} else {
System.out.print(blocks[i][j].getNum() + " ");
}
}
System.out.println();
}
}
}
```
阅读全文