java用数组实现随机布雷 编程要求:在N*N的二维表格中实现随机布雷,布雷个数M预先定义。如果是雷,显示字符@,如果不是雷,显示本格周围雷个数的统计
时间: 2023-12-10 20:36:54 浏览: 65
以下是Java代码实现:
```java
import java.util.Random;
public class Minesweeper {
public static void main(String[] args) {
int N = 10; // 表格大小为N*N
int M = 20; // 布雷个数为M
int[][] table = new int[N][N]; // 二维表格
Random random = new Random(); // 随机数生成器
int count = 0; // 已布雷个数
// 随机布雷
while (count < M) {
int x = random.nextInt(N);
int y = random.nextInt(N);
if (table[x][y] != -1) { // 该位置未布雷
table[x][y] = -1; // 布雷
count++;
}
}
// 统计周围雷个数
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (table[i][j] != -1) { // 该位置不是雷
int num = 0;
if (i > 0 && table[i-1][j] == -1) num++; // 上方
if (i < N-1 && table[i+1][j] == -1) num++; // 下方
if (j > 0 && table[i][j-1] == -1) num++; // 左方
if (j < N-1 && table[i][j+1] == -1) num++; // 右方
if (i > 0 && j > 0 && table[i-1][j-1] == -1) num++; // 左上方
if (i > 0 && j < N-1 && table[i-1][j+1] == -1) num++; // 右上方
if (i < N-1 && j > 0 && table[i+1][j-1] == -1) num++; // 左下方
if (i < N-1 && j < N-1 && table[i+1][j+1] == -1) num++; // 右下方
table[i][j] = num; // 记录周围雷个数
}
}
}
// 输出二维表格
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (table[i][j] == -1) { // 该位置是雷
System.out.print("@");
} else { // 该位置不是雷
System.out.print(table[i][j]);
}
System.out.print(" ");
}
System.out.println();
}
}
}
```
说明:
1. 使用一个二维数组来表示表格,数组中的元素初始化为0,表示该位置未布雷且周围也没有雷。
2. 首先使用一个随机数生成器来随机布雷,布雷时将数组中对应位置的元素设置为-1,表示该位置是雷。
3. 布雷完成后,再遍历整个数组,对于每个元素,如果它不是雷,则统计它周围的雷个数,并将结果记录在对应位置上。
4. 最后输出整个数组,将雷用字符@表示,其他位置用周围雷个数表示。
阅读全文