c语言扫雷源代码
- 格式:docx
- 大小:19.67 KB
- 文档页数:3
c语言扫雷源代码
以下是一个简单的 C 语言扫雷游戏的源代码示例
c复制代码
#include
#include
#include
#define SIZE 10
#define MINES 20
int mineField[SIZE][SIZE];
int revealed[SIZE][SIZE];
void initializeField() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
mineField[i][j] = 0;
revealed[i][j] = 0;
}
}
}
void placeMines() {
int count = 0;
while (count < MINES) {
int row = rand() % SIZE;
int col = rand() % SIZE;
if (mineField[row][col] != -1) {
mineField[row][col] = -1;
count++;
}
}
}
void printField() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
if (revealed[i][j] == 1) {
if (mineField[i][j] == -1) {
printf("* "); } else {
printf("%d ", mineField[i][j]);
}
} else {
printf(". ");
}
}
printf("\n");
}
}
int countMines(int row, int col) {
if (row < 0 || row >= SIZE || col < 0 || col >= SIZE || mineField[row][col] !=
-1) {
return 0;
}
int count = 0;
for (int i = row - 1; i <= row + 1; i++) {
for (int j = col - 1; j <= col + 1; j++) {
if (i >= 0 && i < SIZE && j >= 0 && j < SIZE) {
if (mineField[i][j] == -1) {
count++;
}
}
}
}
return count;
}
void revealCell(int row, int col) {
if (row < 0 || row >= SIZE || col < 0 || col >= SIZE || revealed[row][col] ==
1) {
return;
}
revealed[row][col] = 1;
if (mineField[row][col] == 0) {
for (int i = row - 1; i <= row + 1; i++) {
for (int j = col - 1; j <= col + 1; j++) {
revealCell(i, j);
} }
}
}
int main() {
srand(time(0));
initializeField();
placeMines();
int gameOver = 0;
while (!gameOver) {
printField();
int row, col;
printf("Enter row and column (0-%d): ", SIZE - 1);
scanf("%d %d", &row, &col);
if (mineField[row][col] == -1) {
printf("Game Over! You hit a mine.\n");
gameOver = 1;
} else {
int count = countMines(row, col);
revealCell(row, col);
if (count > 0) {
printf("There are %d mines nearby.\n", count);
} else {
printf("You are safe in this cell.\n");
}
}
}
printField();
return 0;
}
这个示例实现了一个简单的 C 语言扫雷游戏。它使用二维数组来表示地雷场,-1 表示地雷,其他数字表示相邻格子中的地雷数量。用户通过输入坐标来选择要揭示的格子,并根据揭示的结果进行游戏判断。请注意,这只是一个简单的示例,可能需要进一步完善和优化。