本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下
功能设计
扫雷大家应该都玩过,这是一个十分经典的游戏,今天我将给大家讲解如何用C语言实现扫雷,我的这个扫雷有如下几个功能:
1、显示该点周围雷的个数
2、第一次下子,不炸死
3、坐标周围没雷,可以实现展开
4、游戏结束后展示玩家用时
效果展示
话不多说,先附上效果图:
设计思路
我们只要输入坐标就可以扫雷了,是不是很有趣?
其实要想实现这也不难,我们要用几个算法模块来模拟游戏规则,需要用函数来调用各个模块使游戏跑起来。
那么第一步我们就要构思一个棋盘,看见上面第一张图没,在开始游戏的界面我打印了两个棋盘,有0和1的棋盘是给我们设计者看的,它可以显示出当前雷的真实分布,这有利于我们测试代码的正确性,而全是 * 的棋盘是给玩家扫雷用的。
那我们就需要用二维数组来打印两个棋盘,假如我们要打印10X10的棋盘,那我们的二维数组元素也要为10X10个吗?,不能,因为我们在设计算法时需要统计坐标周围8个方位雷的个数,假如要统计边界坐标周围雷的个数,那么就会有数组越界的问题,那我们就要在10X10的边界多上一圈元素,也就要定义12X12的数组元素,这些元素我们不要打印出来,心里有数就行,如下图:
1
2
3
4
#define row 12
#define col 12
show_mine[row][col];//玩家数组
real_mine[row][col];//设计者数组
我们在一个项目里建立三个源文件,如下:
1、我们打印设计者棋盘要用数组real_mine,打印玩家棋盘要用数组show_mine,两个数组在开始必须要初始化,在设计者棋盘中字符0代表不是雷,字符1代表雷,先初始化两个数组
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
void init_mine()//初始化两个雷阵
{
int i = 0;
int j = 0;
for (int i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
show_mine[i][j] = '*';
real_mine[i][j] = '0';
}
}
}
2、打印两个雷阵(不要忘了打印横竖序号以便确定坐标)
1
2