写一个C语言10*10扫雷单人游戏代码
时间: 2024-06-10 12:07:19 浏览: 9
好的,以下是一个简单的10*10扫雷单人游戏代码,仅供参考:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 10 // 行数
#define COL 10 // 列数
#define NUM 10 // 地雷数量
int map[ROW][COL] = {0}; // 地图
int flag[ROW][COL] = {0}; // 标记
// 随机生成地雷
void generate_mine() {
int i, x, y;
srand(time(NULL));
for (i = 0; i < NUM; i++) {
x = rand() % ROW;
y = rand() % COL;
if (map[x][y] == 9) {
i--;
} else {
map[x][y] = 9; // 9 表示地雷
}
}
}
// 统计周围雷的数量
int count_mine(int x, int y) {
int count = 0;
int i, j;
for (i = x - 1; i <= x + 1; i++) {
for (j = y - 1; j <= y + 1; j++) {
if (i >= 0 && i < ROW && j >= 0 && j < COL && map[i][j] == 9) {
count++;
}
}
}
return count;
}
// 显示地图
void display_map() {
int i, j;
printf(" ");
for (i = 0; i < COL; i++) {
printf("%2d ", i);
}
printf("\n");
printf(" ");
for (i = 0; i < COL; i++) {
printf("__ ");
}
printf("\n");
for (i = 0; i < ROW; i++) {
printf("%2d |", i);
for (j = 0; j < COL; j++) {
if (flag[i][j] == 1) {
printf(" P|"); // P 表示标记
} else if (map[i][j] == 9) {
printf(" *|"); // * 表示地雷
} else {
printf(" %d|", count_mine(i, j));
}
}
printf("\n");
}
}
// 判断游戏是否结束
int is_game_over() {
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
if (map[i][j] != 9 && flag[i][j] == 0) {
return 0;
}
}
}
return 1;
}
int main() {
int x, y;
int over = 0;
generate_mine();
while (!over) {
display_map();
printf("请输入一个坐标(x,y):");
scanf("%d,%d", &x, &y);
if (map[x][y] == 9) {
over = 1;
display_map();
printf("游戏失败!\n");
} else {
flag[x][y] = 1;
if (is_game_over()) {
over = 1;
display_map();
printf("游戏胜利!\n");
}
}
}
return 0;
}
```
希望对你有帮助!如果你还有其他问题,可以继续问我哦。接下来,请问你还有什么问题需要我帮忙解答吗?