用c写一个扫雷程序
时间: 2023-09-02 09:07:33 浏览: 59
以下是一个简单的扫雷游戏的C语言程序,你可以参考它进行编写和学习:
```c
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 10
#define COL 10
#define EASY_COUNT 10
void InitBoard(char board[ROW + 2][COL + 2], int row, int col, char set);
void DisplayBoard(char board[ROW + 2][COL + 2], int row, int col);
void SetMine(char board[ROW + 2][COL + 2], int count);
int CountMine(char board[ROW + 2][COL + 2], int x, int y);
int main()
{
char mine[ROW + 2][COL + 2];
int x, y;
int count = 0;
InitBoard(mine, ROW, COL, '0');
SetMine(mine, EASY_COUNT);
while (1)
{
DisplayBoard(mine, ROW, COL);
printf("Enter coordinate(x,y):");
scanf_s("%d,%d", &x, &y);
if (mine[x][y] == 'M')
{
printf("Oops! Game Over!\n");
break;
}
else if (mine[x][y] == '0')
{
count = CountMine(mine, x, y);
mine[x][y] = count + '0';
if (count == 0)
{
int i, j;
for (i = x - 1; i <= x + 1; i++)
{
for (j = y - 1; j <= y + 1; j++)
{
if (mine[i][j] == '0' && i >= 1 && i <= ROW && j >= 1 && j <= COL && !(i == x && j == y))
CountMine(mine, i, j);
}
}
}
}
int i, j;
int win = 1;
for (i = 1; i <= ROW; i++)
{
for (j = 1; j <= COL; j++)
{
if (mine[i][j] == '0')
{
win = 0;
break;
}
}
}
if (win)
{
printf("Congratulations! You Win!\n");
break;
}
}
return 0;
}
void InitBoard(char board[ROW + 2][COL + 2], int row, int col, char set)
{
int i, j;
for (i = 0; i <= row + 1; i++)
{
for (j = 0; j <= col + 1; j++)
{
board[i][j] = set;
}
}
}
void DisplayBoard(char board[ROW + 2][COL + 2], int row, int col)
{
int i, j;
for (i = 1; i <= row; i++)
{
for (j = 1; j <= col; j++)
{
printf("%c ", board[i][j]);
}
printf("\n");
}
}
void SetMine(char board[ROW + 2][COL + 2], int count)
{
srand((unsigned int)time(NULL));
while (count--)
{
int x = rand() % ROW + 1;
int y = rand() % COL + 1;
if (board[x][y] == 'M')
count++;
else
board[x][y] = 'M';
}
}
int CountMine(char board[ROW + 2][COL + 2], 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 (board[i][j] == 'M' && i >= 1 && i <= ROW && j >= 1 && j <= COL)
count++;
}
}
return count;
}
```
这个程序实现了一个简单的扫雷游戏,包括初始化雷区、设置雷区、计算周围雷数、显示雷区等功能。你可以根据自己的需求和理解进行修改和扩展。