一、扫雷游戏功能说明及制作思路说明
1.1扫雷游戏功能说明
- 使用控制台实现经典的扫雷游戏
- 游戏可以通过菜单实现继续游玩和退出游戏
- 扫雷的棋盘是9*9的格子
- 默认布置十个雷
- 排查雷思路如下
- 如果当前位置不是雷,就显示周围有几个雷
- 如果当前位置是雷,则游戏失败结束
- 把除10个雷之外的所有非雷都找出来,则游戏胜利结束
1.2扫雷游戏所需条件
- game.h:此文件包含所对应函数的头文件
- game.cpp:此文件实现所对应函数的功能
- tect:此文件包含游戏的测试逻辑
1.3扫雷游戏制作思路
- 创建菜单:通过创建菜单实现开始游戏或继续游玩和退出游戏
- 创建棋盘:创建9*9的棋盘以布置雷和排查雷提供条件
- 打印棋盘:先把9*9的棋盘打印*为布置雷做准备
- 布置雷:创建随机数把10个雷随机散布棋盘上
- 排查雷:创建scanf函数把想要排查的坐标输入到棋盘中
接下来会以上面所提到的所需条件和制作思路进行讲解
二、扫雷游戏制作过程
1.创建菜单
菜单用do...while循环进行菜单选择,首先先写一篇菜单
此菜单通过menu函数在main函数进行声明,使用者通过输入1或0进行开始游戏或结束游戏,如果输入的数不是1和0,则需重新进行选择。使用者在菜单输入1后,则会通过game()函数开始游戏
2.创建棋盘
先创建两组数组为区别布置好的雷和排查出的雷做出区分
因为上面的行和列由于经常使用,在game.h头文件进行宏定义
tips:为防止排查棋盘边的雷的坐标越界,需要给数组扩大一圈且不影响9*9棋盘的使用
在game.h的头文件中声明创建棋盘函数
创建棋盘函数在tect文件中的game函数实现调用
3.打印棋盘
在game.h的头文件中声明打印棋盘函数
在game文件中实现打印棋盘,打印棋盘通过两个for循环进行打印行和列的棋盘
tips:由于打印了0~9的数组中的列的0包含0~9的数组中的行中的0,所以行只需要打印1~9的数组中的行即可,否则打印的棋盘不工整。
打印棋盘函数在tect文件中的game函数实现调用
4.布置雷
在game.h的头文件中声明布置雷函数
在game文件中实现布置雷函数,棋盘里的行和列生成10个随机数的雷数,通过rand函数实现。每当进入while循环设置雷,则EASY_COUNT减1,直到在棋盘中布置好10个雷跳出循环。同时为保证雷的随机性需要生成随机坐标,判断设置雷是否为0,不是则为设置雷“1”.
随机数的雷数在game.h头文件中进行宏定义
由于调用rand()需要srand(),在tect文件中的main函数里设置srand函数
tips:srand函数和time函数需要包含头文件
布置雷函数在tect文件中的game函数实现调用
5.排查雷
在game.h的头文件中声明排查雷函数
在game文件中实现排查雷函数,当棋盘中的还有雷数时,将进入循环,每排查一个雷,win就会自增(后面会提),当win和雷数相等时,也就是排查完棋盘中的雷后,则宣布游戏胜利。
进入循环后,需判断输入坐标的合法性,如果输入的坐标有误或已经排查过的坐标,将需要重新输入
坐标无误后,对输入的坐标进行判断,如果输入的坐标是雷所在的坐标,则游戏失败,宣布游戏结束。如果输入的坐标不是雷所在的坐标,则对当前坐标周围一圈进行排查,如有雷则
雷数显示在当前所在的坐标。统计周围一圈雷个数需要专门创建统计周围一圈雷个数的函数,统计周围一圈雷个数后赋值给count,count和字符‘0’相加雷个数赋值show,并在当前输入坐标打印当前输入坐标周围的雷数,同时win自增
统计周围一圈雷个数的函数
第一种方法
通过for循环对当前输入的坐标的行和列,x和y,进行加一或减一进行定位周围一圈的坐标的雷数
第二种方法
写出当前输入的坐标的周围一圈的坐标并进行雷个数的统计,最后通过return返回函数
排查雷函数在tect文件中的game函数实现调用
三、扫雷游戏的运行及全部代码
1.扫雷游戏的运行
输入1和开始游戏并要求输入坐标
输入坐标进行排雷
游戏失败
退出游戏
游戏胜利的画面因为懒不玩就不打出来啦~
二、扫雷游戏全部代码
game.h
game
tect
![]()
觉得这篇博客不错的点赞和收藏支持一下呗!感谢您的观看!