文章目录
-
- 游戏的整体框架梳理
- 游戏代码的过程分享
- 小结
1、游戏的基本逻辑
1.1游戏的外壳逻辑
一个游戏有开始,有结束,所以,游戏一开始,就要先把菜单打印一遍,上来先打印,所以选择do while循环。输入正确的数字便可以进入游戏,错误的话,要提醒一下,再次输入正确的数字。
将菜单用函数进行编写调用,外壳就可以结束了
1.2游戏的内部实现逻辑
当玩家选择进入游戏的时候,可以进入游戏的正式大门game函数内部,进入游戏。
首先我们要先了解一下这个游戏,因为目录与游戏无关,所以放在这进行了解,也是没有关系的。
首先,这个界面有三种形态
一个是没有启动时候,也就是进去游戏的时候,会出现一个什么信息都没有的界面
(我们不包括做页面设计,所以,这个界面可以不像这个游戏一样,这些方块可以用 其他的代替)
二是玩游戏中途的形态(成功的跟这个差不多,可以自行加入一个终极显示,显示所有雷的位置),这个形态主要是由 数字 和 代替 构成的,元素有两个,一个是数字,一个是未被排查的地方,也就是 代替。
三是玩游戏失败的形态,这个时候,会显示所有的雷,包括未被排查的雷的身影。
分析完他的三种形态,我们发现,需要一个二维数组将这个信息放置进去,放置的信息有 数字 和 代替(代替的方块),因为,同一个数组里面类型是一致的,所以这里不是数字类型,就是字符类型。
假如是数字类型,我们需要将 代替 也换成数字,但是,这个数字必须大于8,因为周围是雷的话,中间的数字会达到8,小于8的话,会产生歧义,是周围有8个雷呢,还是这个地方就是个没有被排查的方块呢
(因为我们此时不是用数字将方块代替了)
假如是字符类型,我们需要将 代替 也换成字符,同时,数字也需要换成字符型数字,要是字符的话,便可以在识别性高一点,可以弄成符号什么的,比如 * ,将 代替 换成 * ,也更有神秘感。
综上,两者皆可以,但是要是说便捷性的话,还是字符类型的话,比较方便一点,所以以下我会用字符类型的数组。
用字符的话,游戏开始便是这个界面
游戏中,有按雷,有排雷这两个过程,所以得现有雷,再有排雷过程。
安置雷的话,需要将这些棋盘中随机安置雷,雷的话,用字符1表示,此时,表盘上有两个字符 * 和 1 ,这些是玩家可以看到的,所以此时感觉只有一个盘似乎不太够,毕竟安置雷的话,必须放在游戏盘上。但是,游戏盘得公布给玩家,盘上,全部都是 * 。没办法在 * 后面,在放置一个字符啊。
所以还得在需要一个游戏盘,一个盘在明处,一个盘在暗处,这个明面的游戏盘,和暗处的游戏盘相对应,暗处的盘负责放置雷的位置,明面的盘负责显示 代替* 和 雷的个数。
暗处放置雷的方法可以用循环,随机函数进行放置。
明处的雷的数量需要另外一个函数,进行查询,并改变对应明面游戏盘的字符。需要注意的是,当查询的是四个角的位置,或者边上的位置时,若是只有这么大的游戏盘恐怕是不太简洁,要不然,每次查询到边缘都需特殊对待,我们可以将表盘扩大一圈,但是使用的还是内层的游戏盘,外扩一圈完全是为了四个边的计算方便。
接下来,是输入要查询的坐标,分支语句 if 可以提供帮助
1.要保证重复查询的话,会有提示出现,
2.要保证不能访问越界-----超出游戏盘本身的大小
3.要是是雷,直接结束,打印被炸死,挑战失败
4.若不是雷,就要计算并改变这个位置的字符,看周围有几个雷
这样,基本的框架,就出来了,再次看一遍,可以记下关键点准备开始写第一个游戏了。