C语言实现简单的扫雷小程序
warning:
这篇文章距离上次修改已过190天,其中的内容可能已经有所变动。
以下是一个简单的扫雷游戏的C语言实现示例。程序中包含了布置雷区和处理玩家点击的基本逻辑。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS 3
#define COLS 3
#define MINE_COUNT 1
char minefield[ROWS][COLS];
char revealed[ROWS][COLS];
void setup() {
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
minefield[i][j] = '*';
revealed[i][j] = '?';
}
}
srand(time(0));
int mineCount = MINE_COUNT;
while (mineCount > 0) {
int row = rand() % ROWS;
int col = rand() % COLS;
if (minefield[row][col] == '*') {
minefield[row][col] = '0' + mineCount;
mineCount--;
}
}
}
void printField(char field[ROWS][COLS]) {
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%c ", field[i][j]);
}
printf("\n");
}
}
void reveal(int row, int col) {
if (revealed[row][col] != '?') {
printf("This space has already been revealed.\n");
return;
}
if (minefield[row][col] == '*') {
printf("You hit a mine! Game over.\n");
printField(minefield);
exit(1);
} else {
revealed[row][col] = minefield[row][col];
printf("You revealed a safe space.\n");
}
}
int main() {
printf("Welcome to Simple Mine Sweeper!\n");
setup();
printf("Minefield:\n");
printField(minefield);
printf("Enter row and column to reveal (e.g., 0 0): ");
int row, col;
while (scanf("%d %d", &row, &col) == 2 && row >= 0 && row < ROWS && col >= 0 && col < COLS) {
reveal(row, col);
printf("Revealed field:\n");
printField(revealed);
printf("Enter row and column to reveal (e.g., 0 0): ");
}
printf("You won!\n");
printField(revealed);
return 0;
}
这段代码定义了一个3x3的井字形雷区和一个雷的数量。程序首先设置布置好雷的雷区,然后允许玩家通过输入坐标来点击并显示该位置。如果玩家点击的是雷,游戏结束。如果玩家成功显示了所有安全空间,游戏获胜。这个简单的实现没有包括计算周围雷的数量的功能,这是扫雷游戏的一个常见特性。
评论已关闭