如何做一个泡泡龙游戏(六)

简介: 嗨!大家好,我是小蚂蚁。上一节中,我们学习了泡泡龙游戏中的查找算法,这个算法可以帮助我们找到所有相邻的相同颜色的泡泡,在查找完泡泡之后,再通过判断满足条件的泡泡的数量是否大于等于 3,来决定是否应该进行消除。

嗨!大家好,我是小蚂蚁。


上一节中,我们学习了泡泡龙游戏中的查找算法,这个算法可以帮助我们找到所有相邻的相同颜色的泡泡,在查找完泡泡之后,再通过判断满足条件的泡泡的数量是否大于等于 3,来决定是否应该进行消除。


这是泡泡停靠后的查找和消除的过程,但是这只是消除过程的一部分,还有另一部分需要处理。



来看一下上方这张图,发射一个蓝色的泡泡,这个蓝色的泡泡停靠后,通过查找算法,找到了它右侧的两个相同的蓝色泡泡,因为数量满足了 3 个,所以这 3 个蓝色泡泡会进行消除。



3 个蓝色泡泡被消除了之后,就成了上面图中的样子,剩下了 3 个“悬空”的泡泡。而我们知道这是不对的,在一个正常的泡泡龙游戏中,是不会有“悬空”的泡泡的,下方的这 3 个泡泡也应该被消除。


我们暂且把这个叫做“连锁消除”吧!因为上方的与它连接的泡泡被消除了,所以它也应该顺带着进行消除。


“连锁消除”应该如何去处理呢?我们仍然需要使用之前学过的查找算法,只是这次查找的起点不再是停靠的泡泡,而是最上方第一行的所有泡泡。



还是先把泡泡进行一下数据抽象,不同的颜色对应的不同的数字,空的位置对应的是 0 。如图,下方 3 个“悬空”泡泡的上方的蓝色泡泡都是 0 ,因为它们满足消除条件,被消除了,所以这里成了空位置(设置为 0)。



我们以第一行的第一个泡泡为起点开始查找,依次查看与它相邻的泡泡,只要相邻的泡泡不是 0 ,那么就以它为新的起点继续查找。具体的查找步骤我们在上一节中已经演示过了,在此就不多讲了。


总之,经过了所有的查找之后,所有上方的 3 行泡泡都能够被找到。剩余的泡泡,也就是下方的 3 个“悬空”的泡泡,因为中间被 0 个隔开了,所以无法查找的到。


经过这一轮的查找之后,我们找到了所有不应该消除的泡泡,反之,没有被找到的那些就是应该被消除的泡泡。


这里有一个需要注意的地方,就是我们要依次的以第一行的每一个泡泡为起点进行查找,这样才能够找到所有不能消除的泡泡。上方举的例子由于前 3 行都是满的,所以理论上以其中任何一个泡泡为起点进行查找,都能够找到所有前 3 行的泡泡。但是不要忘了,还有下方这样的情况。



如果只以第 1 行第 1 个泡泡为起点进行查找的话,那就只能找到左上方的 4 个泡泡,找不到右侧的这些泡泡了。所以整个遍历查找的过程是依次以第 1 行的每一个泡泡为起点进行遍历查找,直到查找完所有的泡泡。


来看一下这个“连锁查找”的积木逻辑。



跟之前的查找算法一样,都是使用递归查找,唯一的区别是,只要相邻的泡泡不是 0 ,就满足查找条件。


最后,来看一下全部两次查找过程的积木逻辑。



第一次查找以停靠的泡泡为起点,目的是找到所有与它相邻的颜色相同的泡泡。第二次查找是依次以第一行的每一个泡泡为起点,目的是找到所有的需要进行“连锁”消除的泡泡(没被找到的就是要被消除的)。


预览一下,看看消除以及连锁消除。



红色的泡泡满足消除条件被消除,下方的黄色泡泡因为失去了连接,也顺带被连锁消除了。


我们用了两篇文章来讲泡泡龙游戏消除的两个过程,其实这两个过程使用的是几乎一样的查找算法,只不过是起点和判断条件有些差异。这些东西就是一个消除游戏中的核心查找算法了,如果你能够详细清楚的了解这整个过程,就会发现很多的消除游戏都大同小异,不信就找几个不同类型的消除游戏来看一看,测试一下你是否具备了一双能够洞悉游戏表象,看穿其本质的眼睛。


表象的世界总是千变万化,内在的实质却依旧始终如一。


我是会做游戏也会教你做游戏的小蚂蚁,想学习做游戏的话,关注我的公众号就对啦!

这里是我的游戏开发课程服务,不只是一门课,而是一套围绕着新手学习做游戏有关的一整套服务。致力于帮助更多的人学会做游戏并做出自己的游戏,目前已有 45 名学员,多位同学已经通过学习做出了自己的游戏,如果你是一位想学习做游戏的朋友,欢迎【点击这里】了解详情。

这是我做的几个简单好玩消除小游戏,闲暇之余希望能给你带来片刻的放松和愉悦。

精致1010

一个很精致的消除游戏。

小程序

精致点点连线

忙碌生活中的片刻放松。

小程序

水果方块1010

果汁四溅的经典消除游戏。

小程序

圆点守护者

为守护家园而战。

小程序

也欢迎加个微信,交个朋友,朋友圈每日分享与做游戏有关的知识内容,可以来围观。接受付费咨询,不闲聊,望见谅。

相关文章
|
6月前
|
算法
泡泡龙游戏开发实战教程(6):实现连锁消除
泡泡龙游戏开发实战教程(6):实现连锁消除
76 0
|
算法 小程序
如何做一个泡泡龙游戏(五)
嗨!大家好,我是小蚂蚁。我们今天来继续学习泡泡龙游戏中最核心的东西:查找匹配算法。 其实这也不算是什么新东西了,如果你有看过我的其它关于消除游戏的教程,应该会知道,消除游戏的查找算法就那么一个,不论何种类型的消除游戏,这个算法的核心是不变的,只不过会根据不同类型的消除稍作调整而已。所以,如果你之前对查找算法还不是很了解的话,那么就尝试跟随着这篇教程把它彻底搞懂吧!
115 0
|
小程序 索引
如何做一个泡泡龙游戏(二)
嗨!大家好,我是小蚂蚁。今天我们继续学习制作一个泡泡龙游戏。 绝大部分的泡泡龙游戏都是关卡制的,你玩过了一关,然后接着再玩下一关。每个关卡其实都是预先设计好的,闯关的过程就是游戏将一个一个设计好的关卡呈现给玩家的过程。这些关卡都是怎样设计的呢?游戏又是怎样将这些设计好的关卡呈现出来的呢?欢迎带着这两个疑问开启今天的阅读之旅。
143 0
|
小程序
如何做个泡泡龙游戏(四)
嗨!大家好,我是小蚂蚁。在上一节中,我们学习了泡泡的发射,移动,反弹和停靠。所有的这些都是以计算的方式来实现的,我们没有选择使用物理,碰撞检测这些方式,因为泡泡龙游戏需要一定的精准性,而通过在每一帧进行计算,可以保证游戏的精准。
112 0
|
小程序 流计算
如何做个泡泡龙游戏(三)
嗨!大家好,我是小蚂蚁。今天我们来继续了解在泡泡龙游戏中,泡泡是如何发射,移动,反弹和停靠的。 这一节里会涉及到比较多的数学运算,不过完全不用担心,试着找一张纸和一支笔,画一画,很容易理解的。
127 0
|
小程序
如何做一个泡泡龙游戏(一)
嗨!大家好,我是小蚂蚁。从今天开始,我将会用几篇文章讲一下如何制作一个泡泡龙游戏,泡泡龙是一个传统经典的消除游戏,也是一个经久不衰永不过时的游戏。 这篇文章我们主要来了解一下如何设置泡泡龙游戏的初始布局。
148 0
|
算法 索引 容器
如何做一个俄罗斯方块游戏(二)
嗨!大家好,我是小蚂蚁。今天我们继续学习如何做一个俄罗斯方块游戏。整个系列教程计划按照这个流程图开展,这也是我制作整个游戏的过程,今天我们就来看一下“随机生成形状”这个模块。想要实现随机的生成形状,首先必须要知道在俄罗斯方块中一共有多少种形状(也就是我们上一节中留下的第二个问题)。
180 0
|
定位技术 开发者
如何做一个俄罗斯方块游戏(一)
从今天开始,我将开启一个新的游戏,并且顺带着会写一个新的系列教程,这个游戏就是人人都知道的——俄罗斯方块。 我一直都在做消除类型的游戏,在所有消除类型的游戏里,俄罗斯方块可以称得上是“鼻祖”了,所以,不论怎样这个系列里都不能少的了它。
144 0
|
小程序 索引
如何做一个塔防小游戏(二)
为了方便设置炮塔的位置,可以使用一个精灵图片作为标识,图中我使用了黄色的五角星作为炮塔位置的标识,可以在场景区中直接拖拽五角星对炮塔的位置进行设置。然后在游戏启动后我们将使用炮塔创建按钮来替换这些五角星的位置。
102 0
|
小程序 容器
如何做一个塔防小游戏(一)
实现一个防守塔非常的简单,因为小游戏制作工具已经为我们提供了现成的“行为”了。 选中作为炮塔的精灵,然后在属性区的下方点击“管理行为”按钮,在行为对话框中开启“炮塔”行为。这个行为已经为我们提供了制作一个防守塔所需的大部分的功能了。
162 0