如图就是扫雷游戏的初始界面,是一个9×9的方格,所以如果我们想要实现扫雷游戏就要打印出9×9的棋盘。但棋盘应该有两个,一个是我们看到的什么都没有的棋盘,一个是有雷的棋盘。根据棋盘的样子我们可以想到由二维数组来实现棋盘。当我们选择了一个地方后,会显示出附近8个位置雷的数量,但当我们选择到了边上时,就会超出我们所创建的二维数组的界限。所以我们可以创建一个11×11的数组来避免超出界限。
我们的扫雷游戏可大致分为四步1.创建两个棋盘2.随机放置雷的位置3.输入坐标,判断是否踩雷4.显示出附近雷的数量。
1.创建棋盘:
首先要创建两个二维数组,一个show数组(玩家看到的),一个是mine数组(存放雷的)。我们想要能显示出附近雷的数量,首先想把数字1作为雷,但若那个位置只有一个一时,雷和雷的数量就会冲突,不知道哪个是雷还是雷的数量。所以可以用字符‘1’来代表雷,数字来代表雷的数量。
首先打印游戏菜单:让用户可以选择是否进行游戏。并通过switch语句实现用户的选择。然后在用
户选择开始游戏后。创建game()函数来实现游戏的功能。
用户选择开始游戏后,我们就要根据上面红字部分来设计游戏,首先要先创建11乘11的数组,再把数组中放入雷。但我们要让用户看到的是9乘9的界面,所以只需要打印9乘9的就可以了。因此我们可以用创建Intiboard()函数来初始化棋盘,再创建print()函数来打印出期盘,看我们的初始化。
打印出来的棋盘就是图中的样子,但我们在排雷时要输入坐标,就是图中这样时坐标很难找,因此我们可以在每行每列的开头标上数字。代码如图。
2.随机放置雷的位置
当我们初始化后,可以将雷存入mine数组中。(注意我创建的mine数组是存放雷的数组,show,数组是用户看到的*组成的图案)我们创建函数setmine()来放置雷到mine数组中。然后用我们创建的
print函数打印出mine棋盘。因为要设置十个雷,所以我们要用循环,来布置雷,但因为rand生成的数是随机数,所以把rand()%9这样就会生成0到8的随机数,加上1就会生成1到9的随机数。再用x和y来把雷存入mine数组中。
3.输入坐标,排雷
我们可以创建一个getmine()函数来让用户猜雷的位置。如图。当输入1到9的数时,符合坐标就进行判断是否踩雷。另外此处设置变量win是因为这样可以在猜完全部空格时会自动跳出循环。并打印出成功。要想打印出附近八个有几个雷,并显示在show数组上,我们就不能值给getmine函数传mine数组也应该传show数组。
改动后如下图。
就可以在正确输入坐标后在进行判断。
4.判断雷的数量
在编写判断程序之前,首先要了解一点。要想把字符转化为数字,就可以用该字符减去字符0来得出数字。
如:'0'-'0'=0 '3'-'0'=3所以我们可以让我们输入的坐标附近八格的字符全部减去‘0’并用一个变量来接受这个值,再把这个这个值通过上面的公式又转化成字符在show数组中。在通过我们创建的print函数打印出来。然后再创建findmine函数来计算雷的数量。
最后在将各个函数嵌套。Project-游戏-10-29/Project-游戏-10-29 · 苟国航/苟国航 - 码云 - 开源中国 (gitee.com)
相关代码在上面看。