扫雷小游戏
食用指南:
本篇文章介绍了如何使用c语言实现扫雷小游戏。十分详细!
--欢迎各位交流--
1.功能说明
- 在控制台实现
- 通过菜单选择玩、继续游戏或者退出游戏
- 在9*9的棋盘上实现
- 默认随机布置10个雷
- 排查雷:不是雷,显示周围雷的个数;是雷,炸死并提示游戏结束
- 找出其他不是雷的位置,游戏结束
- 页面:
2.分析
可以通过多文件来写 例:分为game.h(写头文件和函数声明)、game.c(编写游戏内容)、text.c(编写主程序)
2.1二维数组存储信息
2.1.1数组大小设置
使用俩个数组来实现棋盘信息的存储,一个用于雷位置信息的存储,一个用于棋盘展示信息的存储。
由于排查雷时需要排查位置的周围,所以当排查最后一排或最右边一排时,会溢出数组,那么我们就需要扩大数组大小,在上下左右各加一行/一竖,也就是11*11的棋盘大小。(可以在头文件中声明符号表示该大小,方便修改)
2.1.2数组初始化
之后便是初始化数组了,我们可以另外编写一个函数用于数组初始化
- 用于存储雷的信息的数组全部初始化为‘0’用于展示的数组全部初始化为‘*’
- 写俩个循环太麻烦,可以直接添加一个函数参数用于写入修改的内容
2.2打印棋盘
我们只需要打印9*9的棋盘即可,但是不太美观,可以添加循环打印行数,在循环内部添加语句打印列数,这样就能快速看出几行几列。
想要更美观可以在棋盘打印前加上 ----扫雷游戏----
2.3布置雷
雷的布置需要生成随机坐标x,y,而随机坐标的生成就需要靠随机数的生成。
生成随机数会用到srand()函数和rand()函数,具体可参考前面猜数字小游戏中的解释。
把生成的随机数放入x,y中,将数组中对应的位置由‘0’改为‘1‘即可完成雷的布置。需要注意的是,在修改之前需要判断是否被修改过,也就是此处是否为’0‘,若为’0‘,则修改,反之则不修改。
2.3排查雷
排查雷和布置雷都在9*9的范围内操作。
设置一个变量win,当win<71(除去10个雷)时才能排查雷,当排查的位置不是雷,加一;当win等于71时,则排雷成功并打印含有雷信息的棋盘。(游戏结束)
当玩家输入要排查的坐标时,要先判断该坐标是否在范围内。在范围内才可排查。
排查时,先判断该位置是否为’*‘,如果是,那么可以排查;如果不是,就代表被排查过,无需再次排查。
排查的位置如果是’1‘,玩家被炸死;不是’1‘,就需要统计雷的个数。
所以我们接下来的问题就是如何统计不是雷的位置周围雷的个数。
我们知道字符’1‘的ASCCI码值为49,’0‘为48,那么’1‘-’0‘=1,如果让该坐标周围的字符都减去字符’0‘,再将数值相加,就能得到雷的个数了。(数值为1那么此处为雷,个数加1)
3.完整代码
game.h
game.c
text.c
以上就是本篇全部内容
如有错误,欢迎一起沟通交流
“我们未来见”
--Promising--
