java用数组实现随机布雷 编程要求:在N*N的二维表格中实现随机布雷,布雷个数M预先定义。如果是雷,显示字符@,如果不是雷,显示本格周围雷个数的统计,编程提示(1)Block类:boolean isMine表示是不是雷,int num表示周围雷的个数。(2)用三重循环实现周围雷个数的统计
时间: 2023-12-10 10:37:04 浏览: 118
布雷程序,可以完成一个二维数组的布雷
4星 · 用户满意度95%
以下是Java实现随机布雷的代码:
```java
import java.util.Random;
public class MineSweeper {
private Block[][] mineField; // 雷区
private int size; // 大小
private int mineCount; // 雷数
public MineSweeper(int size, int mineCount) {
this.size = size;
this.mineCount = mineCount;
mineField = new Block[size][size];
initMineField();
setMines();
setNums();
}
// 初始化雷区
private void initMineField() {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
mineField[i][j] = new Block();
}
}
}
// 放置雷
private void setMines() {
Random random = new Random();
int count = 0;
while (count < mineCount) {
int x = random.nextInt(size);
int y = random.nextInt(size);
if (!mineField[x][y].isMine()) {
mineField[x][y].setMine(true);
count++;
}
}
}
// 统计周围雷的数量
private void setNums() {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (!mineField[i][j].isMine()) {
int count = 0;
for (int row = i - 1; row <= i + 1; row++) {
for (int col = j - 1; col <= j + 1; col++) {
if (row >= 0 && row < size && col >= 0 && col < size) {
if (mineField[row][col].isMine()) {
count++;
}
}
}
}
mineField[i][j].setNum(count);
}
}
}
}
// 打印雷区
public void printMineField() {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (mineField[i][j].isMine()) {
System.out.print("@ ");
} else {
System.out.print(mineField[i][j].getNum() + " ");
}
}
System.out.println();
}
}
public static void main(String[] args) {
MineSweeper mineSweeper = new MineSweeper(10, 10);
mineSweeper.printMineField();
}
}
class Block {
private boolean isMine; // 是否是雷
private int num; // 周围雷的数量
public boolean isMine() {
return isMine;
}
public void setMine(boolean isMine) {
this.isMine = isMine;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
```
代码中使用了三重循环来实现周围雷数的统计,首先遍历雷区中每个非雷方块,然后再遍历该方块周围的8个方块,统计周围雷数。如果遍历到的方块超出了雷区的边界,则不计入统计。
阅读全文