扫雷游戏”的c语言代码
时间: 2023-08-17 13:06:11 浏览: 43
以下是一个简单的扫雷游戏的 C 语言代码,仅供参考:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 9
#define COL 9
#define MINE_NUM 10
void init(char board[ROW][COL], char show[ROW][COL])
{
int i, j, k;
srand((unsigned int)time(NULL));
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
board[i][j] = '0';
show[i][j] = '*';
}
}
for (k = 0; k < MINE_NUM; k++) {
i = rand() % ROW;
j = rand() % COL;
if (board[i][j] == '0') {
board[i][j] = 'M';
} else {
k--;
}
}
}
void display(char show[ROW][COL])
{
int i, j;
printf(" ");
for (i = 0; i < COL; i++) {
printf("%d ", i + 1);
}
printf("\n");
for (i = 0; i < ROW; i++) {
printf("%c ", i + 'A');
for (j = 0; j < COL; j++) {
printf("%c ", show[i][j]);
}
printf("\n");
}
}
void expand(char board[ROW][COL], char show[ROW][COL], int i, int j)
{
if (show[i][j] != '*') { // 已经扩展过了
return;
}
if (board[i][j] == 'M') { // 点中雷
show[i][j] = 'X';
return;
}
int count = 0, m, n;
for (m = i - 1; m <= i + 1; m++) {
for (n = j - 1; n <= j + 1; n++) {
if (m >= 0 && m < ROW && n >= 0 && n < COL && board[m][n] == 'M') {
count++;
}
}
}
if (count > 0) { // 周围有雷
show[i][j] = count + '0';
} else { // 周围没有雷
show[i][j] = ' ';
for (m = i - 1; m <= i + 1; m++) {
for (n = j - 1; n <= j + 1; n++) {
if (m >= 0 && m < ROW && n >= 0 && n < COL) {
expand(board, show, m, n);
}
}
}
}
}
int main()
{
char board[ROW][COL], show[ROW][COL];
int i, j, k, x, y;
init(board, show);
display(show);
for (;;) {
printf("Enter the position you want to sweep (format: row column): ");
scanf("%d %d", &x, &y);
if (x < 1 || x > ROW || y < 1 || y > COL) {
printf("Invalid position!\n");
continue;
}
i = x - 1;
j = y - 1;
if (show[i][j] != '*') { // 已经扩展过了
printf("This position has been swept!\n");
continue;
}
expand(board, show, i, j);
display(show);
for (k = 0; k < ROW * COL; k++) {
if (show[k / COL][k % COL] == '*' && board[k / COL][k % COL] != 'M') {
break;
}
}
if (k == ROW * COL) {
printf("You win!\n");
break;
}
if (show[i][j] == 'X') {
printf("You lose!\n");
break;
}
}
return 0;
}
```
注意:该代码仅供参考,可能存在一些潜在的问题或不足之处。