目录
前言
扫雷的内容
game.h头文件
test源文件
game.c源文件
视频
前言
相信很多人都玩过扫雷,那么今天我自己做一个扫雷玩一玩。
那么接下来就跟着我一步一步的实现它吧!
首先要创建两个源文件,一个头文件。
创建了之后呢,我们就要对扫雷的内容进行实现啦。
扫雷的内容
game.h头文件
这个文件里放的就是一些函数的声明,库函数的引用,还有棋盘的定义和雷的数量。
test源文件
下面的图片就是“test”文件里主要的内容啦。
有菜单,游戏的内容和运行的主体逻辑。当然还是要引用头文件之后,库函数和自定义的函数才可以正常使用。
这里是一些个选择和循环,加了一个清屏的一个语句“system("cls");”,是为了让屏幕变得干净一些,不显得那么杂乱。
这个游戏的大致逻辑就是:先打印菜单让玩家选择(1或0)是否开始游戏,选择了0就退出游戏,选择不是(1或0)就认为玩家点错了,对玩家进行一个提示,用“do while”循环至少保证玩家可以进行一次选择。游戏开始这玩家就开始扫雷,直至把不是雷的区域全部点开游戏胜利,被雷炸死游戏结束。
下面这张图是我对游戏内容的一些逻辑:
首先创建两个字符数组,mine数组存放雷的信息,show数组存放排查雷的信息。而后对两个数组进行初始化,mine数组全部初始化为字符‘0’,show数组全部初始化为‘*’。
这个时候如果不放心,我们可以先把扫雷的棋盘打印出来,看一看有没有问题,再进行下一步。
下一步是把雷存放到mine数组中,在show数组中排查雷,如果排查的坐标在mine数组中不是雷,就看看周围的九宫格里有几个雷就在show数组中显示几(这里显示的是字符数字),如果是雷那么玩家就被炸死游戏结束。
game.c源文件
在这里就是扫雷游戏内容的细节啦。
首先是初始化扫雷的棋盘,这里传过来的内容我们依次接收,把mine数组和show数组分别初始化为‘0’和‘*’;右图为分别为mine数组和show数组初始化过后的样子。
上图已经显示过棋盘的样子了,这里主要是棋盘的打印和一些棋盘的优化。
这里是将雷存放到mine数组里,这里是定义了一个雷的数量(EASY_COUNT),用rand函数随机生成了0~8的数字+1变成1~9。存放10个雷,如果随机到的坐标是字符‘0’那么就把这个坐标改为字符‘1’,存放成功雷的数量-1,直至10个雷存放完毕。
这里玩家输入坐标后,先判断输入的坐标是不是0~9里的数字,不是就进行提示,是就先看那个坐标有没有被排查过,排查过了就进行提示,没有排查过就判断坐标里的是否为字符‘0’,(因为我们的mine数组里不是‘0’就是雷‘1’),不是字符‘0’那就是雷,提示玩家被炸死了游戏结束。
如果是字符‘0’那么就判断坐标周围九宫格里有几个雷,上图就是判断周围八个坐标有几个雷的函数。(因为数组里存放的是字符,所以把周围八个坐标加起来减去8乘字符‘0’,得到的就是周围有几个雷的数字) 将它返回给count,再把count加字符‘0’得到的就是字符数字,而后再把show棋盘打印给玩家看,玩家再进行下一步排雷。
这里while循环的判断条件就是游戏胜利的判断条件,因为9X9的棋盘里只有81个格子,减去雷的数量就是玩家要排查的一个范围,玩家成功排查一个非雷位置,win++,在最后判断一下win如果等于81个格子减去雷的数量,那么就证明玩家把非雷的位置都排查出来了,判定玩家游戏胜利。
视频
下面是扫雷游戏的简要视频。
19-32-48



