扫雷游戏(初阶)规则:
先随机布置10个雷 然后进行扫雷
若踩到雷就爆炸 游戏结束
否则继续 直至通关
制作一个9*9的格子
难点:
- 表示出来如图1所示的9*9格子-----二维数组
- 然后如何进行埋雷(随机) -----这时候就运用到关于随机数的知识了
- 如何表示如图2的数字(暗含该格子周围的8个格子的总雷数)
- 当格子在边界时 该格子周围并不是8个格子又该如何解决
- 考虑用什么去代替雷 以及什么代替无雷的空格
- 最后那就是用代码去实现我们的游戏啦
让我们一起慢慢前行 见证最美的日出
图3
但想想还是用字符’0’ ‘1’ 比较好(当然大家可以去想想有没有更好的方法 我的方法也并不一定是最简便的 这里我也只是提供一种方法) 用‘0’‘1’的话就得解决上图歧义的问题
所以我们想到用两张图 一张图用来埋雷 另一张图用来表示 排查出雷的个数(某个格子周围总雷数)
如下图:
图4 图5
计算某个格子周围8个格子的总雷数:由于字符‘0’的ASCII码值与‘1’的ASCII码值差1 所以我们只需要用八个格子中字符的ASCII值总和减去8个‘0’的值 就能知道周围的雷数有几个了 当某个格子在边界时 为了出于方便 我们不妨也按照上面的方法 但这时就没有8个格子了 所以我们在原有的二维数组上增加四条边 让边上的每个格子的字符都为‘0’
这样就方便于计算雷数了
在排查出的雷的个数的图上我们用‘*’来表示还未被排查
图6 图7
如果大家有什么不理解的地方或者有更好的方法 我们可以在评论区进行交流
我将这个扫雷游戏用多个文件进行编程
有test.c game.c game.h
.c 源文件用来函数的定义
.h头文件用来函数的声明
以上代码仅仅只是扫雷游戏的初阶(由于本人目前知识有限 待以后了解更多C语言知识 会进行修改 补充 精进)