用 c++ 实现一个扫雷游戏2
时间: 2023-12-25 09:40:03 浏览: 83
好的,我可以为您提供一个简单的扫雷游戏的 C++ 代码。此代码仅为示例,实际游戏可能需要进行更多的改进和优化。
```
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
const int BOARD_SIZE = 10;
const int NUM_MINES = 10;
void initialize_board(bool board[][BOARD_SIZE], int num_mines) {
int count = 0;
while (count < num_mines) {
int x = rand() % BOARD_SIZE;
int y = rand() % BOARD_SIZE;
if (!board[x][y]) {
board[x][y] = true;
count++;
}
}
}
void display_board(bool visible[][BOARD_SIZE]) {
cout << " ";
for (int i = 0; i < BOARD_SIZE; i++) {
cout << i << " ";
}
cout << endl;
for (int i = 0; i < BOARD_SIZE; i++) {
cout << i << " ";
for (int j = 0; j < BOARD_SIZE; j++) {
if (visible[i][j]) {
if (board[i][j]) {
cout << "* ";
} else {
int count = 0;
if (i > 0 && board[i-1][j]) count++;
if (i < BOARD_SIZE-1 && board[i+1][j]) count++;
if (j > 0 && board[i][j-1]) count++;
if (j < BOARD_SIZE-1 && board[i][j+1]) count++;
cout << count << " ";
}
} else {
cout << "- ";
}
}
cout << endl;
}
}
bool sweep(bool board[][BOARD_SIZE], bool visible[][BOARD_SIZE], int x, int y) {
if (visible[x][y]) return false;
visible[x][y] = true;
if (board[x][y]) return true;
if (x > 0 && sweep(board, visible, x-1, y)) return true;
if (x < BOARD_SIZE-1 && sweep(board, visible, x+1, y)) return true;
if (y > 0 && sweep(board, visible, x, y-1)) return true;
if (y < BOARD_SIZE-1 && sweep(board, visible, x, y+1)) return true;
return false;
}
int main() {
bool board[BOARD_SIZE][BOARD_SIZE] = {false};
bool visible[BOARD_SIZE][BOARD_SIZE] = {false};
srand(time(NULL));
initialize_board(board, NUM_MINES);
while (true) {
display_board(visible);
int x, y;
cout << "Enter coordinates (x y): ";
cin >> x >> y;
if (sweep(board, visible, x, y)) {
cout << "BOOM! Game over." << endl;
break;
}
bool done = true;
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
if (!visible[i][j] && !board[i][j]) {
done = false;
break;
}
}
if (!done) break;
}
if (done) {
cout << "You win!" << endl;
break;
}
}
return 0;
}
```
这段代码实现了一个简单的扫雷游戏,其中包含了以下函数:
- `initialize_board`:初始化游戏板,随机放置地雷。
- `display_board`:显示游戏板,包括已经翻开的方格和未翻开的方格。
- `sweep`:翻开一个方格,如果这个方格中有地雷,返回 true,否则返回 false。
- `main`:主函数,实现游戏逻辑。
这份代码实现了一个比较简单的扫雷游戏,如果需要更加复杂的版本,可以根据需求进行修改和优化。
阅读全文