[编程作业5-10]用数组实现随机布雷(SetMine.java) 编程要求:在N*N的二维表格中实现随机布雷,布雷个数M预先定义。如果是雷显示字符@,如果不是雷,显示本格周围8格中雷的数目。 (1) Block类: boolean isMine表示是不是雷,int num表示周围雷的个数。 (2)用三重循环实现周围雷个数的统计。lood.
时间: 2023-12-10 14:37:43 浏览: 35
以下是SetMine.java的代码实现:
```java
import java.util.Arrays;
import java.util.Random;
public class SetMine {
public static void main(String[] args) {
int n = 10; // 表格大小为10*10
int m = 10; // 雷的个数为10
Block[][] blocks = new Block[n][n];
int count = 0;
Random random = new Random();
while (count < m) {
int x = random.nextInt(n);
int y = random.nextInt(n);
if (blocks[x][y] == null) {
blocks[x][y] = new Block(true);
count++;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (blocks[i][j] == null) {
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] != null && blocks[k][l].isMine()) {
num++;
}
}
}
blocks[i][j] = new Block(false, num);
}
}
}
for (Block[] row : blocks) {
System.out.println(Arrays.toString(row));
}
}
static class Block {
private boolean isMine;
private int num;
public Block(boolean isMine) {
this.isMine = isMine;
}
public Block(boolean isMine, int num) {
this.isMine = isMine;
this.num = num;
}
public boolean isMine() {
return isMine;
}
@Override
public String toString() {
return isMine ? "@" : String.valueOf(num);
}
}
}
```
首先定义了表格大小n和雷的个数m,然后使用二维数组blocks来表示每个方块,其中Block类有两个属性:isMine表示是否为雷,num表示周围雷的个数。
使用Random类生成随机坐标,如果该方块还未被标记为雷,则标记为雷,直到达到雷的个数m为止。
然后使用三重循环来统计每个方块周围雷的个数,最后输出整个表格。可以看到,如果是雷,输出字符@,否则输出周围雷的个数。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)