C语言实现扫雷游戏详解

本文实例为大家分享了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

猜你喜欢

转载自blog.csdn.net/buduoduoorg/article/details/113134251