用C语言写一个扫雷代码
时间: 2023-12-29 10:42:58 浏览: 74
好的,下面是一个简单的扫雷代码实现,使用C语言编写:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MINE -1
#define COVER -2
#define UNCOVER -3
#define ROW 10
#define COL 10
#define TOTAL_MINE 10
int board[ROW][COL]; // 扫雷棋盘
int mine_count; // 雷的数量
// 初始化棋盘
void init_board() {
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
board[i][j] = COVER;
}
}
}
// 打印棋盘
void print_board() {
int i, j;
printf("\n ");
for (i = 0; i < COL; i++) {
printf("%d ", i);
}
printf("\n");
printf(" ");
for (i = 0; i < COL; i++) {
printf("_ ");
}
printf("\n");
for (i = 0; i < ROW; i++) {
printf("%d |", i);
for (j = 0; j < COL; j++) {
switch (board[i][j]) {
case COVER:
printf("X|");
break;
case UNCOVER:
if (board[i][j] == MINE) {
printf("*|");
} else {
printf("%d|", board[i][j]);
}
break;
}
}
printf("\n");
}
}
// 布雷
void set_mine() {
int i, row, col;
mine_count = TOTAL_MINE;
srand((unsigned) time(NULL));
for (i = 0; i < TOTAL_MINE; i++) {
row = rand() % ROW;
col = rand() % COL;
if (board[row][col] == MINE) {
i--;
} else {
board[row][col] = MINE;
}
}
}
// 计算当前方格周围的地雷数量
int count_mine(int row, int col) {
int count = 0, i, j;
for (i = row - 1; i <= row + 1; i++) {
for (j = col - 1; j <= col + 1; j++) {
if (i >= 0 && i < ROW && j >= 0 && j < COL && board[i][j] == MINE) {
count++;
}
}
}
return count;
}
// 揭露当前方格
void uncover(int row, int col) {
if (board[row][col] == MINE) {
printf("\n你输了!\n");
exit(0);
}
if (board[row][col] == UNCOVER) {
return;
}
board[row][col] = count_mine(row, col);
if (board[row][col] == 0) {
int i, j;
for (i = row - 1; i <= row + 1; i++) {
for (j = col - 1; j <= col + 1; j++) {
if (i >= 0 && i < ROW && j >= 0 && j < COL) {
uncover(i, j);
}
}
}
}
}
// 主函数
int main() {
int row, col;
init_board();
set_mine();
print_board();
while (1) {
printf("\n请输入要揭露的方格坐标(如3 5),输入-1 -1结束游戏:");
scanf("%d%d", &row, &col);
if (row == -1 && col == -1) {
printf("\n你退出了游戏!\n");
exit(0);
}
uncover(row, col);
print_board();
}
return 0;
}
```
这个程序实现了一个简单的扫雷游戏,可以通过输入坐标来揭露对应的方格,如果揭露到地雷则游戏结束,否则会显示当前方格周围的地雷数量。
阅读全文