利用数组和函数制作扫雷小游戏(主体)

        大家好,我LOVEHUTAO回来了,我是承诺了上一节课写一篇博客,但是在刷视频,玩游戏中时间真的过的很快,我都反应不过来。事以至此,只能坦白的告诉大家了,其实我是巴别塔的恶灵,v我50,把我从棺材里救出来,带你统领万名干员,拯救这片大地!

       好了不开玩笑了,让我们步入今天的主题,利用数组和函数制作一个扫雷小游戏(扫雷的一小部分,太懒了不想补电脑上扫雷的其他功能QwQ (  ๑ó﹏ò๑))。

      相信大家多数都玩过扫雷这个小游戏吧 ,初中和小学的时候电脑课断网全靠扫雷来消遣时光,不过我还是介绍一下这个小游戏的规则吧!6e8f43de1a7046ba8c3fdd3f20f6f302.jpg

 扫雷的规则是在游戏开始前先把雷布置好,我们需要找出雷的位置,当我们选择一个格子时,它会告诉我们周围8格有几个雷,我们根据提示把所有处了雷以外的部分找到就胜利了,反之则失败。2a6768fed5c2475e9b0f3d32b826ad84.jpg

a51a9ce8efa24452b0d5c3d5991cde48.jpg

        好的既然我们已经知道规则了就可以开始着手编程了,而想要实现该功能最重要的是把游戏的内容分步骤运行,于是我把这个小游戏分为几个部分,分别是:主体,菜单,两个二维数组的创建和打印,埋雷,以及最后的打印周围八格雷的个数。 为了方便理清思路我把函数在头文件创建,然后直接在源文件应用。

        既然要制作一个小游戏,那么首先得给出一个最基础的逻辑,就是什么时候开始游戏,什么时候运行函数,又是什么时候游戏结束。这个最基本的逻辑在猜数字游戏中也讲过,如下所示:

d6f68dd9337148c99699dfb968cff1a5.png

        同样,我直接就使用在猜数字游戏中使用的菜单了,

6ae2bfabbd4b40fb805f696dda13f2e4.png

        这些东西感觉没必要多说,让我们直接开始讲函数的主体吧,我们这里以game命名(函数的名字最好有意义方便使用)。在开始讲函数的主体前,我们必须先构建函数实现的思路,你准备用到什么东西,比如这里的扫雷,我们进入扫雷游戏映入眼帘的就是一个由小正方形组成的矩阵,看到这个我们很容易想到使用二维数组来进行游戏面板的创建,而想要想网页的扫雷小游戏一样不让我们看到雷的位置,我们就需要用到两个数组来做到这一功能:一个存放我们雷的位置,一个用来呈现给玩家看,然后我们需要将雷埋下去,因此我们又需要一个函数来实现我这里把其命名Set其次我们需要输出周围雷的个数,我这里将其命名为complete最后就是提出游戏胜利的条件。到这里确实有点太冗长了,那我们根据上面的思路就可以构建一个函数的主体了。

(我们应该知道数组的创建和打印了吧,我这里分别命名为Iniime,Inishow,Primine,Prishow。分别代表两个二维数组的赋值和打印,怕你不知道说一嘴(○` 3′○))

33203a404c3849f2a3178dbb28891206.pngdd11d667595c401ea37f2162e577f68f.png

我想应该都能看懂吧♪(^∇^*),我这里按之前的逻辑将想要的函数依次放入game中,并在game中给出了游戏结束的条件当除了雷以外的地方全部被揭开后就判断游戏胜利。注意:这里的quantd是雷的个数,quant0是用来控制数组打印的范围的,因为后面比较周围八格时四个边缘的格子不好比较因此我们需要将数组加宽一圈,方便我们统计周围雷的个数,这个后面会详细讲到,而Finally则是不是雷的格子的个数,以便于判断何时胜利,并且我们让a和b处于1~9之间防止超出范围出错。

        好的,那么接下来我们一个一个的将扫雷游戏需要的各个函数模块。

        首先我们创建两个数组并将其打印出来,一个作为玩家看到的面板,一个作为隐藏在内部的实际分布图(也就是在此处埋雷)。我想这个不需要我多讲吧┑( ̄Д  ̄)┍。(这里用的是char二维数组,至于为什么不用int,你尝试用int来完成就会发现这太麻烦了,最后无法将雷的个数轻松显示用户能看见的面板上。)(这里我们制作的是9*9的初阶扫雷)

92e9777e2ff74413aea5c74f66284e2d.png

7c2f7da88e954fdba55bb0a0d4662e4b.png

ee68a6a4a4984c6093b9b3f4573b3883.png

前面这些应该都没有问题,但是我们在vs上不能做到想查一个地方鼠标轻击一下就行,而是需要我们输入想要探查的坐标,因此我们就需要加上一列数字来帮助玩家确认位置,如下:

4e1d43e0f4db45adb4a26cb4a7bdd05a.png

        可以看到我们Inimine是用‘0’作为初始量的,这里的‘0’,其实代表的就是此处没有雷的意思,而Inishow中我们用‘*’来代替小方格作为显示在玩家眼前的面板。既然用‘0’代表没有雷,那么我们可以容易想到用‘1’来代表此处有雷。(有人说我就要用‘2’来代表雷,我只能说你开心就好,不要在最后计算周围雷个数的时候忘记-1就好(* ̄(エ) ̄))。提醒:这里‘0’,‘*’,‘1’都是字符别搞错了!(°ー°〃)

        当我们创建好数组后就可以埋雷了,(记得埋在对应mine的数组里哈o(* ̄▽ ̄*)o)4a32b68303f14cf0800e3fd9e468717a.png

        由于我们要实现的是九乘九的初阶扫雷,因此我们需要在9*9的范围内随机给出‘1’代表我在这里埋下一个雷,这里就用到time函数和rand(),srand()。这里我们在猜数字游戏也已经讲过了,我就不再说一遍了。(你可以理解函数第一行的代码就是一个随机数生成器)

        讲到这里我们就只差最后一步了,提示玩家周围雷的数量,这里有很多种方法来完成,我这边就用一个最笨的方法好了,那就是直接把他们加起来,反正只有8个数字,至于别的方法你们可以自己去找,我太笨,就不说了。提醒:注意这里是字符的相加减,不要弄混了啊喂Σ( ° △ °|||)︴

7b55c056e26a4d6f874167ec4750cfa4.png

上面屏蔽的是我错误的方法(气死偶了o(≧口≦)o我还不知道我哪里错了)

        最后我们运行代码,一个可以在电脑上玩的扫雷小游戏就做好啦!22be847f547e4b968659d1d570c8d618.png

        感觉讲的不是很清楚,讲究着看吧。

感谢大家的观看。

4f99e8778d834cef92a86468e59667be.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值