c++二维数组编写扫雷游戏
时间: 2023-11-05 13:52:08 浏览: 95
下面是一个简单的 C++ 二维数组实现扫雷游戏的例子:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int ROWS = 10;
const int COLS = 10;
void initBoard(bool board[][COLS], int mines);
void printBoard(bool board[][COLS], bool reveal);
int main() {
srand(time(nullptr)); // 设置随机数种子
bool board[ROWS][COLS];
int mines = 10;
initBoard(board, mines);
printBoard(board, false); // 初始状态,不显示地雷
return 0;
}
void initBoard(bool board[][COLS], int mines) {
// 初始化棋盘
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
board[i][j] = false;
}
}
// 布置地雷
int count = 0;
while (count < mines) {
int row = rand() % ROWS;
int col = rand() % COLS;
if (!board[row][col]) {
board[row][col] = true;
count++;
}
}
}
void printBoard(bool board[][COLS], bool reveal) {
cout << " ";
for (int i = 0; i < COLS; ++i) {
cout << i << " ";
}
cout << endl;
for (int i = 0; i < ROWS; ++i) {
cout << i << " ";
for (int j = 0; j < COLS; ++j) {
if (board[i][j]) {
if (reveal) {
cout << "* ";
} else {
cout << ". ";
}
} else {
cout << "- ";
}
}
cout << endl;
}
}
```
在这个例子中,我们定义了一个 `bool` 类型的二维数组 `board`,表示扫雷游戏的棋盘。数组的每个元素代表一个方格,值为 `true` 表示这个方格上有地雷,否则没有地雷。
`initBoard()` 函数用来初始化棋盘,随机布置指定数量的地雷。
`printBoard()` 函数用来打印棋盘。如果 `reveal` 参数为 `true`,表示要显示所有的地雷,否则只显示未被翻开的方格。
在 `main()` 函数中,我们设置随机数种子,然后调用 `initBoard()` 函数初始化棋盘,并调用 `printBoard()` 函数打印初始状态的棋盘。
阅读全文