1.前言
想必打击都玩过扫雷游戏,通过玩这个游戏,我们能找到许多不错的游戏设计思路。以下是这个游戏的链接:https://www.msn.cn/zh-cn/play/microsoft-minesweeper/cg-msminesweeper
大家可以试玩一下。
2.扫雷游戏的分析和设计
2.1扫雷游戏的功能
通过玩扫雷游戏,我们可以分析出以下几个特点:
1.游戏可以通过菜单实现继续玩或者退出游戏
2.扫雷的棋盘是9*9的格⼦
3.默认随机布置10个雷
4.把除10个雷之外的所有雷都找出来,排雷成功,游戏结束
5.可以排查雷
2.2游戏的初步构想
扫雷的过程中,布置的雷和排查出的雷的信息都需要存储,所以我们需要⼀定的数据结构来存储这些 信息。因此,我们需要生成一个9×9的棋盘,并在上布置雷的信息和排查雷。毫无疑问,二维数组成了最好的选择。但同时,我们也面临两个问题:第一,如果将扫雷的信息都存到一个二维数组里面去,势必会导致信息的冗杂混乱。第二,如果程序要判断边缘格子周围雷的个数,如9*7的位置的方格,则会访问了超出9*9数组空间(蓝色格子)的位置。这样势必会导致程序的出错。
因此为了解决这两个问题,首先,我们应当设计两个二维数组,来分别存储扫雷棋盘的雷的分布和和周围雷的个数。其次,为了防止判断雷数时,越界访问,我们要留将方阵上下左右都流出多余一行的缓存空间。如图,9*9的方阵可以做成11*11的。
接下来我们开始存储雷,令1为雷,0为空存储到矩阵(注意缓冲区不能放1),这样雷的分布表也就完成了。同样的我们就也开始创建储存周围雷的个数信息的二维数组,因为为了一一对应,这个数组也应该是11*11的类型。并且由于游戏最开始用户还未进行任何操作,因此最开的数组元素全为字符'*'。随着玩家的操作,数字开始显现。为了数据类型的统一,数字都为ch