来一个关于扫雷的Java代码
时间: 2024-05-14 11:12:49 浏览: 42
以下是一个简单的扫雷游戏的Java代码,仅供参考:
```java
import java.util.*;
public class Minesweeper {
private int rows;
private int cols;
private int numMines;
private int[][] board;
private boolean[][] revealed;
private boolean gameOver;
private int remainingTiles;
public Minesweeper(int rows, int cols, int numMines) {
this.rows = rows;
this.cols = cols;
this.numMines = numMines;
this.board = new int[rows][cols];
this.revealed = new boolean[rows][cols];
this.gameOver = false;
this.remainingTiles = rows * cols - numMines;
// initialize board with mines and numbers
Random rand = new Random();
for (int i = 0; i < numMines; i++) {
int row = rand.nextInt(rows);
int col = rand.nextInt(cols);
if (board[row][col] != -1) {
board[row][col] = -1;
for (int r = row - 1; r <= row + 1; r++) {
for (int c = col - 1; c <= col + 1; c++) {
if (r >= 0 && r < rows && c >= 0 && c < cols && board[r][c] != -1) {
board[r][c]++;
}
}
}
} else {
i--;
}
}
}
public void reveal(int row, int col) {
if (revealed[row][col] || gameOver) {
return;
}
revealed[row][col] = true;
remainingTiles--;
if (board[row][col] == -1) {
gameOver = true;
return;
} else if (board[row][col] == 0) {
for (int r = row - 1; r <= row + 1; r++) {
for (int c = col - 1; c <= col + 1; c++) {
if (r >= 0 && r < rows && c >= 0 && c < cols) {
reveal(r, c);
}
}
}
}
}
public void printBoard() {
for (int r = 0; r < rows; r++) {
for (int c = 0; c < cols; c++) {
if (revealed[r][c]) {
if (board[r][c] == -1) {
System.out.print("* ");
} else {
System.out.print(board[r][c] + " ");
}
} else {
System.out.print("- ");
}
}
System.out.println();
}
}
public boolean isGameOver() {
return gameOver;
}
public boolean isGameWon() {
return remainingTiles == 0;
}
}
```
使用示例:
```java
Minesweeper game = new Minesweeper(10, 10, 15);
Scanner scanner = new Scanner(System.in);
while (!game.isGameOver() && !game.isGameWon()) {
game.printBoard();
System.out.print("Enter row and column to reveal: ");
int row = scanner.nextInt();
int col = scanner.nextInt();
game.reveal(row, col);
}
if (game.isGameWon()) {
System.out.println("Congratulations, you won!");
} else {
System.out.println("Game over!");
}
```