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 表示地雷,其他数字表示相邻格子中的地雷数量。用户通过输入坐标来选择要揭示的格子,并根据揭示的结果进行游戏判断。请注意,这只是一个简单的示例,可能需要进一步完善和优化。