各位小伙伴们大家好。首先,非常感谢大家一直以来对我的支持。
今天,就由我来给大家带来Windows7金典小游戏《扫雷》的编程实现。
1,C语言基础知识。
2,数据类型和变量,
3,分支语句。
4,循环语句。
5,数组,二维数组
6,基础的函数知识,自定义函数知识。
C语言扫雷对高手来说一般般,对新手来说难度较大。
正文开始:
经典扫雷游戏曾经是windows7系统自带的游戏。有非常悠久的历史。
其大体逻辑为:
设计者设计棋盘和安放炸弹》》》》玩家输入排查坐标》》》》
1,不是炸弹:告诉玩家该点周围有多少炸弹。
2,是炸弹:游戏结束并判定失败。
》》》》排查出所有的炸弹,游戏结束并判定胜利。








如图,我们创建了两个两给二维数组作为棋盘。宏定义行和列数ROW和COL。
这里讲一下为什么要设计ROWS和COLS这两个宏。
(图片来自比特官网)

在后面统计被选择格周围炸弹数量时,如果被选择格在边缘地块:会导致越界放访问:
解决办法是在棋盘外层再加装一圈。
此外,理解这两个棋盘,经过本人思考:是整个游戏设计的核心。
原因:
1,后面一切操作都在围绕这两个二维数组展开。
2,两个二维数组互为表里共同构成了整个游戏的框架,
3,bomb数组负责安放炸弹,show数组负责显示数字,在后续函数变量设置方面作用巨大。
首先,我们在原来单文件的基础上,需要准备三个文件

test。c负责游戏测试
game.c和game.h为一个整体模块:共同实现函数的设计:
game.c负责函数主体内容的制作,.h负责声明函数,存放宏定义和头文件。
然后,我们可以设计初始化函数了



图一为在测试中的函数调用。图二为在头文件中的函数声明。图三为函数实现。
通过嵌套循环来遍历二维数组中的每一个元素。
设计set形式变量来接收初始化的要求,实现“以一带二”即:两个数组由同一个函数控制初始化。
先上代码:



打印棋盘,只打表,不打里。不能让人看到雷埋在哪里。
同样使用嵌套循环遍历法打印。
加入行号和列号:
首先循环打印一行从0到9数组作为列号。
然后在给出每一行的行号k时插入行号。
先上代码:




首先,设置需要安放的十个雷(变量m)
用rand随机数做为坐标随机放置炸弹。
注意rand随机数的生成是伪随机,需要加上图三这句话才能变成真随机(这一点在猜数字中有讲解)


把八个元素无脑加起来,除了注意数字和数字字符的转化方法(通过加减‘0’)外没什么好讲的。



玩家输入坐标,进入判定,不是炸弹给出该坐标周围八格的炸弹数据。
每次猜中不是雷的格子使得count+1,用while循环直到等于ROW*COL-10.游戏结束判定胜利。
其中踩到是炸弹则炸死,结束游戏,判定失败。
未来,我 将为大家带来更高级的版本。例如通过函数递归实现点一块一整片的效果。
感谢您的观看,您的点赞和收藏就是我最大的动力。谢谢!
我是小此方,我们下次再见。