扫雷
OUR CHILDHOOD
(是不是有一种回到童年的赶脚呐)
那要怎么玩呐
结合我们今天的主题数组的小秘密,大家在看到这个熟悉的扫雷框框的时候,是不是有一种新的理解呢?
其实,扫雷小游戏,是基于一个叫做二维数组的结构上,加上了一些图形界面化编程从而展现出来的一款小游戏,如果我们细细分析,很容易就可以找到其中的奥秘.
首先,我们要明确扫雷的初始化主题功能:
1.游戏的初始化,包含行列的个数,雷的个数分别有多少个
2.雷的随机分布.我们总是希望游戏是有乐趣的,而扫雷小游戏的乐趣就在于你不知道你将要点下的方块是否是雷,这个需要我们从其他方块下隐藏的数据进一步推算才能得知
3.如果点击的方块不是雷,他应该显示要不就是空格,说明周围都不是雷;要不就是数字,方块中的数字说明了你所点击的这个方块的周围格中,存在雷的个数
好了,既然我们已经理清楚了扫雷小游戏的初始化所需要的步骤,那么我们就可以直接写代码了
在这里我所使用的编译器是visual studio 2017 (dev c++也可以,主要根据大家的习惯来就好)
1.头文件的定义
这是头文件定义以及一些数据的宏定义.其中前4行都是C语言的头文件定义,time.h的作用是与stdlib.h配合用于取随机数,Windows.h是用于system(“pause”);暂停程序运行的一个头文件
剩下的四行则是用来对扫雷数组的宏观定义了,其中COL是列数,ROW是行数,NUM是含有的雷数,map是二维数组,主要的是用来创建一个新的二维数组
头文件
2.创建扫雷的外壳
在这个环节中,我们将设置一个10*10的方阵,并赋予他们初始值0,然后根据随机数,随机挑选行列的值,然后将其赋值为-1(雷),这样我们的初始扫雷模板就诞生了
3.遍历数组每一个元素,查看元素周围的9宫格里面有几个雷
采用了遍历数组的方式来查看二维数组中每一个值是否是雷,不是雷的话,周围9宫格中,会有多少雷。
4.输出遍历的数组,并结束程序
5.成果展示
咳咳,总结一下
细心的小伙伴们应该发现了一个问题,就是我们明明是设计了一个10*10的方阵,但是在最后输出的时候,我们却输出了一个12*12的方阵,这是为什么呢?
原理是这样子的,在我们的第三部的中,如果我们想要去遍历数组,查看每一个值得周围9宫格中是否有雷的话,很容易出现一个问题,就是原来方阵的四条边上的值不可以求其9宫格,因为它自己就是边缘。我们为了解决这个问题,简化程序的书写,我们人为的在其10*10的方阵中加上一个边框,将我们想要的值很容易的展现出来。
emmmm
自己做出来的游戏是不是格外有意思呐
文案:魏洪志
排版:滕蕊茜