小游戏(2)扫雷游戏

一、简述

鸽子的时间太长了,其实学完数组和函数就应该搞出来这个丐版的小游戏了,不耽误,反正总归是轮到了,嘻嘻。

二、依旧菜单\.

我们这里写的是一个丐版的扫雷游戏,难度就固定了,所以菜单写起来就是玩游戏和退出游戏两个选项。

三、扫雷的主逻辑

1.主函数

主函数没什么好说的,无非就是让用户选择玩还是不玩,玩完一次以后是否要继续,最重要的是扫雷的逻辑。

2.扫雷的逻辑

扫雷游戏就是一个棋盘,其中有数字和雷,数字显示的是九宫格以内雷的个数:

所以现在我们要创建一个棋盘,最开始的时候什么都不显示,每选择一个坐标去排除就显示相应的信息(周围的雷的个数)。

创建的棋盘的每个坐标都是一个取值,既然类似于二维平面的坐标,那我们就用一个二维数组来储存这个信息。

最开始的时候应该是一个雷都没有的状态,我们应该随机去设置雷,说到随机设置肯定离不开之前写猜数字游戏的时候用到的rand函数,rand函数又离不开srand函数,srand函数的参数我们给的又是time这个函数。

这里就说出来了两种棋盘,一种是布置好雷的棋盘,一种是我们在扫雷过程中看到的棋盘。

扫雷过程中看到的棋盘应该是由本次扫雷给出的坐标然后统计出九宫格内的雷的个数。

需要注意的是边界统计雷个数:

这个位置不够九宫格,如果正常数的话,肯定会存在越界的情况,所以我们将来为了不越界,干脆多初始化两行和两列,只不过最外面那一圈不布置雷。

扫雷过程中有以下几种情况:

1.扫到雷了,被炸死了。这种情况下游戏结束,并给出布置雷的信息。

2.没有扫到雷,展示该坐标九宫格内雷的个数,游戏继续。

3.扫完了所有不是雷的坐标,游戏成功。

接下来一步一步来实现。

四、创造所需几种棋盘

1.初始化所需棋盘

2.布置雷

在说逻辑的时候说有一个重要的特点就是如果扫的不是雷,显示的是四周雷的个数,如果我们到时候需要计算的话,布置雷的棋盘应该以0 1来实现,因为这样的话方便后续计算并展示。

为了后续方便统计雷,特别是边界的雷,假如我们最后要9×9的棋盘,就扩成11×11,即:

只要最外面这一圈不布置雷就行,即1~9行和1~9列内的元素才有可能赋值雷

这么实现:

并且为了美观,咱们把雷的位置记录下来,并且用'*'来展示,毕竟你为了好实现,0代表没雷,1代表有雷,但是展示的时候还是得展示的好像我们埋的就是雷:

布置完雷以后展示一下,将要被排查的棋盘,为扫雷做准备:

3.排查雷

布置好以后就可以让人开始排查雷:

这里就是我们所说的,坐标有效,如果是雷怎么办,如果不是雷怎么办,哦对,还得防止坐标被反复排查:

即在判断坐标有效后又加一判断,判断是否排查过。

相信眼尖的人已经注意到了,在这段代码中还有两个地方,while循环的条件还未去设置,另一个是不是雷,要展示这次排查出来的坐标九宫格内雷的个数。

循环条件暂时没想好,先管九宫格这个,这个有头绪:

只要将这八个坐标里的值遍历一下数数有几个就可以了,注意,我们初始化的时候给的可全是字符(因为展示的也是字符,索性都字符二维数组了),所以可以根据ASCII码的差值来:

'0'-'0'为整型0,'1'-'0'为整型1

其实很懊恼,我们写这个while循环是为了一个一个遍历整个棋盘,什么情况下就停止呢,当然是正常遍历完,正常遍历完是整个棋盘的大小减去雷的个数,故条件为:

五、细节处理以及不足之处

1.坐标难看

这个难看可不是不好看,而是不容易看,所以加上行号列号,便于扫雷:

2.测试运行的时候的bug

写的时候

返回的个数正好是九宫格内整数的个数嘛,但是运行不出来,因为:

show数组是一个字符类型的数组,如果直接将int值传过去的话,将会导致不能展示出来个数,因此:

用字符0强制给它凑出来。

六、整体展示

相关推荐
枯萎穿心攻击4 小时前
Unity VS UE 性能工具与内存管理
开发语言·游戏·unity·ue5·游戏引擎·虚幻·虚幻引擎
王小王-1237 小时前
基于Python的游戏推荐与可视化系统的设计与实现
python·游戏·游戏推荐系统·游戏可视化
黑客影儿10 小时前
使用UE5开发2.5D开放世界战略养成类游戏的硬件配置指南
开发语言·c++·人工智能·游戏·智能手机·ue5·游戏引擎
FairGuard手游加固15 小时前
小游戏AssetBundle加密方案解析
安全·游戏
HAH-HAH1 天前
【洛谷】P2197【模板】Nim 游戏
算法·游戏
★YUI★1 天前
学习制作记录(选项UI以及存档系统)8.24
学习·游戏·ui·unity·c#
BlackQid2 天前
基于C的猜数字游戏——详解随机数生成原理与技巧
游戏·c
Thomas_YXQ3 天前
Unity3D编辑器扩展-物体批量替换设置材质
游戏·unity·编辑器·游戏引擎·材质
Jiezcode3 天前
Unreal Engine ClassName Rule
c++·游戏·图形渲染·虚幻引擎
你也向往长安城吗3 天前
基于 navmesh 的路径搜索技术剖析 (游戏、三维方向必看!!!)
javascript·游戏·游戏开发