从零开始做个泡泡龙(6):实现连锁消除
文摘
教育
2024-07-30 11:10
山东
上一节中,我们学习了泡泡龙游戏中的查找算法,这个算法可以帮助我们找到所有相邻的相同颜色的泡泡,在查找完泡泡之后,再通过判断满足条件的泡泡的数量是否大于等于 3,来决定是否应该进行消除。这是泡泡停靠后的查找和消除的过程,但是这只是消除过程的一部分,还有另一部分需要处理。来看一下上方这张图,发射一个蓝色的泡泡,这个蓝色的泡泡停靠后,通过查找算法,找到了它右侧的两个相同的蓝色泡泡,因为数量满足了 3 个,所以这 3 个蓝色泡泡会进行消除。3 个蓝色泡泡被消除了之后,就成了上面图中的样子,剩下了 3 个“悬空”的泡泡。而我们知道这是不对的,在一个正常的泡泡龙游戏中,是不会有“悬空”的泡泡的,下方的这 3 个泡泡也应该被消除。我们暂且把这个叫做“连锁消除”吧!因为上方的与它连接的泡泡被消除了,所以它也应该顺带着进行消除。“连锁消除”应该如何去处理呢?我们仍然需要使用之前学过的查找算法,只是这次查找的起点不再是停靠的泡泡,而是最上方第一行的所有泡泡。还是先把泡泡进行一下数据抽象,不同的颜色对应的不同的数字,空的位置对应的是 0 。如图,下方 3 个“悬空”泡泡的上方的蓝色泡泡都是 0 ,因为它们满足消除条件,被消除了,所以这里成了空位置(设置为 0)。我们以第一行的第一个泡泡为起点开始查找,依次查看与它相邻的泡泡,只要相邻的泡泡不是 0 ,那么就以它为新的起点继续查找。具体的查找步骤我们在上一节中已经演示过了,在此就不多讲了。总之,经过了所有的查找之后,所有上方的 3 行泡泡都能够被找到。剩余的泡泡,也就是下方的 3 个“悬空”的泡泡,因为中间被 0 个隔开了,所以无法查找的到。经过这一轮的查找之后,我们找到了所有不应该消除的泡泡,反之,没有被找到的那些就是应该被消除的泡泡。这里有一个需要注意的地方,就是我们要依次的以第一行的每一个泡泡为起点进行查找,这样才能够找到所有不能消除的泡泡。上方举的例子由于前 3 行都是满的,所以理论上以其中任何一个泡泡为起点进行查找,都能够找到所有前 3 行的泡泡。但是不要忘了,还有下方这样的情况。如果只以第 1 行第 1 个泡泡为起点进行查找的话,那就只能找到左上方的 4 个泡泡,找不到右侧的这些泡泡了。所以整个遍历查找的过程是依次以第 1 行的每一个泡泡为起点进行遍历查找,直到查找完所有的泡泡。跟之前的查找算法一样,都是使用递归查找,唯一的区别是,只要相邻的泡泡不是 0 ,就满足查找条件。第一次查找以停靠的泡泡为起点,目的是找到所有与它相邻的颜色相同的泡泡。第二次查找是依次以第一行的每一个泡泡为起点,目的是找到所有的需要进行“连锁”消除的泡泡(没被找到的就是要被消除的)。红色的泡泡满足消除条件被消除,下方的黄色泡泡因为失去了连接,也顺带被连锁消除了。我们用了两篇文章来讲泡泡龙游戏消除的两个过程,其实这两个过程使用的是几乎一样的查找算法,只不过是起点和判断条件有些差异。这些东西就是一个消除游戏中的核心查找算法了,如果你能够详细清楚的了解这整个过程,就会发现很多的消除游戏都大同小异,不信就找几个不同类型的消除游戏来看一看,测试一下你是否具备了一双能够洞悉游戏表象,看穿其本质的眼睛。表象的世界总是千变万化,内在的实质却依旧始终如一。我做了一个泡泡龙游戏的模版,微信扫描下方小程序码(或长按识别)可以直接体验。你可以选择购买一个模版,结合着系列教程更好的学习。微信扫描下方图中二维码(或长按识别)可以前往我的微信小商店购买模版,购买后备注“泡泡龙模版”即可。
我是会做游戏也会教你做游戏的小蚂蚁,想学习游戏开发的话,关注我的公众号就对啦!
想学做游戏?欢迎加入我的年度游戏开发课程,面向零基础新手。用一年的时间,从零开始做出自己的游戏。欢迎你的加入,来跟一百多位同学一起学习。【点击这里】可了解年度课程详情。
欢迎加入【小游戏运营推广践行群】(点击这里了解详情),学习小游戏推广运营,成为少数的可以以一己之力做出游戏赚到钱的人。目前 80+ 小伙伴已加入,欢迎来和我们一起践行,探索小游戏推广的更多可能(注:学员加星球享半价优惠)。
这里是我制作的部分小游戏《俄罗斯拼图方块》《彩虹星球大冒险》《经典俄罗斯方块》《疯狂泡泡龙》大家可自行点击搜索体验。
推荐学习专栏:
从零开始制作一个经典1010游戏
从零开始制作一个连连看游戏
欢迎加个微信,交个朋友,朋友圈每日分享与做游戏有关的知识和内容,可以来围观。备注“学习做游戏”可免费领取原创的游戏开发教程资料大合集!非学员只接受付费咨询,不闲聊,望见谅。