2024年C C++最新工兵模拟器之扫雷_扫雷模拟器,为了跳槽强刷1000道C C++真题

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

库函数头文件的包含

行列的定义

函数的声明

3.game.c

游戏逻辑的具体实现,是游戏的核心,一般不会展示出来

我们把游戏的逻辑分成以下几个部分:

1.定义雷盘

2.初始化雷盘

3.打印雷盘

4.埋雷

5.获取坐标周围雷的个数

6.递归式展开一片

7.标记或取消标记雷

8.判断胜利

9.排雷

🍔四,游戏代码实现

我们来具体实现上述游戏逻辑:

🍕1.定义雷盘

我们发现扫雷是一个矩形,我们在实现扫雷时,需要打印一个雷盘,并存放埋雷,排雷的数据。这个时候,我们就需要用到二维数组啦。

image-20220513001635386

image-20220513001856671

如上图,我们发现定义雷盘的时候,定义了两个雷盘。一个是用来存放布置好的雷的信息,一个用存放排查雷的信息,这两个雷盘分工明确。这样我们一个用来布置雷,一个用来展示雷。然后我们看宏定义行和列,宏定义的好处是如果以后要更改雷盘的大小,我们只需要把宏定义的行和列更改就行了,增加了代码的可读性,可维护性,可移植性……然后看我们定义了两个行和列,大家看图(画的太丑,以后练练)

image-20220513004821310

我们看2的数字周围8个格子,排雷中2会显示数字,这个数字就是他周围8个格子的雷数;我们再看1数字,他周围只有3个格子,我们在遍历他周围的8个坐标时,会发生数组访问越界,但是如果我们在雷盘的外围再加上一圈,就能完美地避免这个问题。是不是非常的巧妙呢! 所以,9 * 9雷盘我们用于埋雷,11 * 11雷盘我们用于排雷。

🍕2.初始化雷盘

在使用雷盘时,我们要先对他进行初始化,但是我们有两个雷盘,一个一个初始化太麻烦了。我们发现这两个雷盘只有初始化的参数不同,一个全部初始化为0,表示还没有雷,一个全部初始化为#(让玩家不知道雷在哪),那我们就多加一个参数set,看图下:

image-20220513122809768

image-20220513122955777

🍕3.打印雷盘

在给雷盘初始化完之后,我们需要打印雷盘,为了让大家更方便的看坐标进行排雷,标记雷等,我们给雷盘的行和列用数字标识出来。

image-20220513144915484

🍞4.埋雷

埋雷的时候,我们是不能知道雷的坐标的,所以需要系统随机埋雷。这里我们会用到随机数,我们在test.c的main函数里面放上随机数种子,并限制埋雷的坐标,我们宏定义EASY_COUNT为雷的个数,方便以后修改。我们把雷用数字1来代替。


image-20220513145812523

🍞5.获取坐标周围雷的个数

但我们排雷时,如果他不是雷,那他会显示他周围八个坐标雷的个数,我们可以遍历周围8个坐标,看他们是否有雷,如果有雷,它的数据应该是1,没雷就是0,我们用八个坐标的数据减去八个字符0,得到字符1的个数,就是雷的个数。注:字符0不代表数字0,字符1不代表数字1,字符0的ascll码值是48,字符1的ascll码值是49.

image-20220513151342841

image-20220513151501339

🍞6.递归式展开一片

我们的扫雷的规则是如果这个坐标没有雷,且他周围的坐标也没有雷,那他就会继续往外展开,直至遇到有雷的坐标,并显示出来。

image-20220513152613826

🧀7.标记或取消标记雷

在网页版扫雷中我们可以标记或取消标记你觉得可能是雷的坐标,我们用x标记雷的坐标。

image-20220513153248825

🧀8.判断胜利

我们同时需要考虑判断胜利的条件,我们计算出现在还没有排完的雷的个数,如果未排雷的个数等于埋雷的个数,语句为真
说明排雷成功,否则,语句为假,没有排雷成功。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值