返回

初级扫雷程序:用 C 语言点燃你的智力挑战!

后端

扫雷,一款经典且令人着迷的益智游戏,如今用 C 语言焕发了新生!在这个教程中,我们将指导你用 C 语言创建一个初级扫雷游戏,让你亲身体验开发的乐趣,同时锻炼你的思维敏锐度。

游戏规则

扫雷游戏的目标是清除一个雷区,其中包含随机放置的雷。每个方块代表一个单元,可能是安全的,也可能是隐藏着雷。玩家通过点击方块来揭示它们。如果一个方块是安全的,它将显示周围雷的个数。如果一个方块是雷,游戏结束。

C 语言实现

1. 头文件

首先,我们需要包含必要的头文件:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

2. 雷区初始化

接下来,我们定义雷区的大小和雷的总数:

#define SIZE 10
#define NUM_MINES 10

我们创建一个二维数组 grid 来表示雷区,其中 1 表示雷,0 表示安全方块。我们使用 srand()rand() 来生成随机雷位置:

int grid[SIZE][SIZE];
void init_grid() {
  for (int i = 0; i < SIZE; i++) {
    for (int j = 0; j < SIZE; j++) {
      grid[i][j] = 0;
    }
  }

  for (int i = 0; i < NUM_MINES; i++) {
    int x = rand() % SIZE;
    int y = rand() % SIZE;
    while (grid[x][y] == 1) {
      x = rand() % SIZE;
      y = rand() % SIZE;
    }
    grid[x][y] = 1;
  }
}

3. 揭示方块

玩家点击一个方块时,我们调用 reveal() 函数来揭示它:

void reveal(int x, int y) {
  if (grid[x][y] == 1) {
    printf("Game Over!\n");
    exit(0);
  } else {
    int count = count_mines(x, y);
    grid[x][y] = -count;  // 用负值表示已揭示
    printf("%d\n", count);
  }
}

如果方块是雷,游戏结束。否则,我们计算周围雷的个数并更新方块的状态。

4. 计算周围雷的个数

count_mines() 函数计算一个方块周围雷的个数:

int count_mines(int x, int y) {
  int count = 0;
  for (int i = x - 1; i <= x + 1; i++) {
    for (int j = y - 1; j <= y + 1; j++) {
      if (i >= 0 && i < SIZE && j >= 0 && j < SIZE && grid[i][j] == 1) {
        count++;
      }
    }
  }
  return count;
}

5. 游戏主循环

最后,我们在主循环中读取玩家输入并揭示相应的方块:

int main() {
  init_grid();
  while (1) {
    int x, y;
    printf("Enter coordinates (x, y): ");
    scanf("%d %d", &x, &y);
    reveal(x, y);
  }
  return 0;
}

结论

恭喜你完成了初级扫雷游戏的 C 语言实现!通过这个教程,你不仅掌握了基本的游戏编程技巧,还提升了你的逻辑思维能力。愿这个游戏带给你无尽的智力挑战和乐趣。