扫雷作为一个许多90后都印象极为深刻的小游戏,它的简单代码运行方式并不复杂。
首先,介绍一下扫雷游戏的运行规则, 在一个n*n的方格中,排查一个小方格,如果出现雷,则游戏结束,如果出现了一个数字,这个数字代表了以这个数字为中心的九宫格周边八个格子中地雷的数量,随后不断排查,知道所有的雷都被排查完,游戏结束。
一: 然后我们来整理一下编写扫雷游戏的思路:
1:扫雷界面是一个平面方格,可以用一个二维数组来表示,排查雷即输入数组内的下标。
2:在二维数组中放入初始化值字符‘0’,随后往数组内放置地雷字符‘1’,这样我就可以通过计算周围的字符‘0’,和字符‘1’得到九宫格内地雷的数量。
3:但是游戏中,每当我们排一次雷后,都需要将扫雷的界面显示出来,如果我们把地雷和扫雷后的数字放在同一个二维数组中,那么打印的时候会很不方便,那是一不小心可能就打印出来字符‘1’和字符‘0’。
4:因此我们再创建一个和先前那个数组一模一样大的数组,专门用来存放扫雷后的结果。
二:大致的思路设计思路是这样的,接下来我们来进行代码的编写思路
创建两个数组分别是mine和show,它们的大小为ROWS和COLS(mine[ROWS][COLS]和show[ROWS][COLS]),如果我们先要一个9*9 的游戏大小界面,那么我们需要给ROWS和COLS定义为11*11,这是防止数组越界的发生。
因为在9*9的边缘,计算周边九宫格地雷的数量,将会越过9*9的数组去计算向外一格的数据,因此我直接将界面扩大,但打印界面的时候只打印中间的9*9界面。
在mine函数组放入初始化值(字符‘0’)和地雷(字符‘1’),然后将计算出的九宫格内地雷的值放入show数组(初始化可以放入字符‘*’)中,这样直接打印show数组,直到游戏结束或者踩到地雷,才打印mine数组。
三:代码详解
定义部分:
代码主体
game函数的主体
initboard函数 :功能初始化,它的放入的行列是9*9