扫雷的规则我们随便点一个格子,方格即被打开并显示出方格中的数字,方格中数字则表示其周围的8个方格隐藏了几颗雷,点开的数字是几,则说明该数字旁边的8个位置中有几个雷,如果挖开的是地雷则会输掉游戏,重新开始,所以扫雷也有一定的运气成分。接下来我将教大家如何用C语言实现扫雷。
1.逻辑框架设计
和之前的三子棋小游戏一样,我们需要同样的一个框架。
首先,在vs上创建两个.c文件test.c和game.c,再创建一个头文件game.h。我们在test.c文件中写游戏的逻辑框架,在game.c文件中写游戏细节,在game.h文件中进行声明。
在test.c文件中创建主函数,并设计调用test()函数。
void test()
{
}
int main()
{
test();
return 0;
}
开始写test()函数,我们采用do while 循环来创建主要的框架,首先我们需要一个菜单用于给玩家做选择,在test.c中创建一个menu()函数。
void menu()
{
printf("**********************************\n");
printf("******* 1.PLAY *******\n");
printf("******* 0.EXIT *******\n");
printf("**********************************\n");
}
让玩家做出选择,根据玩家的选择我们使用switch case 语句。如果玩家选择1,就进入game()函数开始游戏,如果玩家选择0则退出游戏,如果玩家输入其他值则重新输入。
void test()
{
int input = 0;
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误\n");
break;
}
} while (input);
}
2.游戏内容设计
基础的框架建立好之后,我们开始写game()也就是游戏的主要部分。
首先我们需要两个表格一样的棋盘,一个需要存放布置好的雷的信息,一个用来存放排查出的雷的信息,因此我们需要2个二维数组。我们假设创建的是扫雷的简单模式,9*9=81个格子中有10个雷,我们的二维数组就需要至少9*9的规模,但是扫雷游戏的规则是,当我开始排查雷的时候,如果排查的坐标没有雷,那就需要统计周围的8个坐标中的雷数,如果我们排查的坐标在整个棋盘的最外面一层,这样就没有足够的坐标用于统计,所以我们在设计二维数组的时候需要在外面加上一层,创建2个11*11的二维数组。(在game.h中定义ROWS,COLS,ROW,COL)
#define ROW 9
#define COL 9
#define ROWS ROW +2
#define COLS COL+2
void game()
{
char mine[ROWS][COLS]={0};
char show[ROWS][COLS]={0};
}
下面我们需要