游戏设计:
1、在控制台实现游戏;
2、完成9 x 9或更大的棋盘布局,可自由扩展;
3、在棋盘上随机布雷,个数可随意设置,但不得超过棋盘范围;
4、通过棋盘坐标进行排雷,是雷则炸死,不是的话则继续排雷,直到全部坐标排除,则排雷成功;
5、用户自主决定是否开始游戏;
代码实现思路:
1,首先,需要完成整体游戏实现的框架,由用户选择是否进行游戏,将游戏的代码实现用函数封装,增强代码可读性;

2,然后实现9 x 9的棋盘布局,这里可以用二维数组,定义二维数组后并且对其进行初始化;


这里为什么要定义两个数组呢? 其实一个棋盘是透明的,可以清晰看到布雷的位置,这个棋盘是不被用户看到的,而另一个则是用户真正玩的棋盘,用户选择排坐标进行排雷后,如果是雷则炸死了,然后把第一个透明棋盘打印出给用户。若果不是,则从第一个透明棋盘中计算排雷坐标周围10个坐标总共有几个雷并且将其打印到用户玩的棋盘排雷的那个坐标上;
3,为了能在后续游戏过程中打印棋盘,在初始化棋盘后设计棋盘打印代码函数;


4,为了能让棋盘的布局后续能轻松的进行扩展,这里将数组的行数及列数设置成常亮,为了更好的统计边缘坐标的雷的总个数,将9 x 9的棋盘扩大一维,也就是11 x 11,但游戏的真正的布局还是9 x 9.

5,后面再对棋盘进行布雷代码实现,在头文件将雷的个数设置为常量,为了使雷的布局具有随机性,这里使用rand函数,但是必须在每次程序运行时对种子进行初始化,使得每次程序生成的随机值不同;
![]()

6,最后就是排雷了,因为这里会用到两个数组,所以将两个数组以函数形参的形式传过去,采用循环结构,若用户一直没有排到雷,则循环进行排雷,若排到最后还为排到雷,则循环退出;为了让用户输入有效的坐标,用if语句实现判断,如果在有效坐标内,则进行排雷,否则提醒用户重新输入有效坐标。如果用户排的那个坐标是雷,则输出炸死语句,并且将透明棋盘打印出来,然后结束游戏;
![]()

1630

被折叠的 条评论
为什么被折叠?



