c++实现扫雷内部数组生成,要求10*26的格式,用“*”号表示雷,非雷位置用0-8表示
时间: 2024-05-10 08:17:28 浏览: 88
以下是一个简单的C++实现,用一个二维数组来表示扫雷的内部结构,并且在数组中随机生成雷的位置:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int ROWS = 10;
const int COLS = 26;
const int MINES = 20;
int board[ROWS][COLS];
void init_board() {
// 初始化棋盘
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
board[i][j] = 0;
}
}
// 随机生成雷的位置
srand(time(NULL));
int count = 0;
while (count < MINES) {
int row = rand() % ROWS;
int col = rand() % COLS;
if (board[row][col] == 0) {
board[row][col] = -1; // -1表示这个位置是一个雷
count++;
}
}
}
void print_board() {
// 打印棋盘
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (board[i][j] == -1) {
cout << "*";
} else {
cout << board[i][j];
}
}
cout << endl;
}
}
int main() {
init_board();
print_board();
return 0;
}
```
这个程序使用了一个 `init_board` 函数来初始化棋盘,并且使用了一个 `print_board` 函数来打印棋盘。在 `init_board` 函数中,我们首先将所有的位置都设置为0,然后使用一个while循环来随机生成雷的位置,直到生成了足够数量的雷。在 `print_board` 函数中,我们打印出棋盘,如果一个位置是-1,则表示这个位置是一个雷,我们输出一个星号;否则,我们输出这个位置周围雷的数量。
阅读全文