从零开始做个泡泡龙(5):核心查找匹配算法

文摘   教育   2024-07-26 11:20   山东  
嗨!大家好,我是小蚂蚁。

我们今天来继续学习泡泡龙游戏中最核心的东西:查找匹配算法

其实这也不算是什么新东西了,如果你有看过我的其它关于消除游戏的教程,应该会知道,消除游戏的查找算法就那么一个,不论何种类型的消除游戏,这个算法的核心是不变的,只不过会根据不同类型的消除稍作调整而已。所以,如果你之前对查找算法还不是很了解的话,那么就尝试跟随着这篇教程把它彻底搞懂吧!

先来看一张图片。


如图,最下方的这个橙色的泡泡是发射过来的泡泡。泡泡龙游戏的规则是,当发射的泡泡停靠后,只要有三个或者三个以上的颜色相同的泡泡,就满足消除条件,就将它们消除。所以图中左下方的 7 个橙色的泡泡满足消除条件,可以进行消除。

这是我们通过眼睛直接看到的结果,但是对于计算机来讲,它无法直接看出来结果(在这方面计算机还是比较笨的)。所以,我们需要为它设置一个算法,让计算机能够通过这个算法找到我们眼睛所看到的结果。

计算机并不擅长直接处理颜色,它所擅长处理的是数据,所以我们需要先帮它把这个泡泡龙游戏“翻译”一下。


这个“翻译”还有一个名字叫做数据抽象,我们在第二节中已经讲过了,忘记的话可以去回顾一下。

右侧的这个数据表格是查找算法的基础,整个查找算法都是在这张数据表格中进行的。

在开始查找算法之前,我先简单的描述一下整个查找过程:以当前停靠的泡泡为起点,查看周围所有与它相邻的泡泡,如果发现周围有相同颜色(数字相同)的泡泡,那么就以这个泡泡为起点,继续查看其周围相邻的泡泡.....一直重复这个过程,直到周围不再有相邻的泡泡为止。最终已找到的所有颜色相同的泡泡就是满足条件的泡泡了。

上面这个过程并不好理解,不过没关系,你只需要对它有个印象,然后带着这个印象来看接下来的图片。

在正式开始之前,我们要先了解一下,相邻的泡泡都有哪些。


如图,周围的橙色的泡泡都是相邻的泡泡,这里我们约定在查找时,以左上角的泡泡为开始,顺时针进行查找相邻的泡泡。

接着,我们就一步一步的来看整个查找的过程。









至此,我们的查找过程到达了尽头,也就是说当前这个泡泡周围的 6 个位置都没有相同的泡泡了(要么是已找过,要么是空位置,要么是不同)。

整个查找算法到这里算是完成了一部分了,什么?还没有结束?当然了。在所有的橙色泡泡中,目前只有最后的一个泡泡相邻的 1~6 个位置都查看过了。其他的橙色泡泡都还有相邻的位置没有查看,比如说最下方起点的那个橙色泡泡,其实我们只查看了它的第 1 个相邻的位置,剩余的 2~6 的位置都没有查看。

所以,我们还需要有一个回溯的过程,这个过程就是帮我们查看每一个橙色泡泡周围还没有被查看过的位置。


经历过这样的一次查找过程之后,我们找到了所有的满足条件泡泡(相同颜色)的泡泡。


根据这个表格我们能够知道一共找到了多少个满足条件的泡泡,另外还有一个非常重要的信息,那就是每一个满足消除条件的泡泡所在的“行列号”信息(即表格的第几行第几列)。根据“行列号”可以在游戏中找到那个唯一的确定的泡泡,有了这些信息我们就能够对那些相同颜色的泡泡进行消除处理了。

最后,我们来看一下泡泡匹配查找算法的积木逻辑。


整个查找算法其实是一个递归算法,但是由于目前微信小游戏制作工具不允许使用递归的方式,所以在“泡泡匹配查找1”的函数中,我调用了“泡泡匹配查找2”函数,其实它们俩一模一样,只是使用这种方式来实现了递归。

另外还有一点儿需要注意的是,奇数行和偶数行的泡泡在计算相邻的位置时是有差别的,主要的差别在于上方和下方的相邻位置的计算。


对于查找匹配算法,最难的地方在于理解整个过程,包括如何向前查找,以及如何向后回溯。希望这篇文章的这些图片可以帮助你理解这个过程,只要你能在脑袋中对整个过程有个清晰的了解,那么实现这个查找算法就很简单了。由于当前我使用的积木编程,所以看起来挺长的,如果使用代码的话,也就是二三十行而已。

现在开始,离开你的电脑和手机,拿出纸和笔。如果你能够在纸上复现整个查找过程,那么你对于查找算法的理解就算透彻了。

相信我,这个时间和精力花的绝对超值,因为这意味着你已经打通了任督二脉,你不但掌握了泡泡龙游戏的查找算法,你也掌握了所有消除类型游戏的查找算法。

我做了一个泡泡龙游戏的模版,微信扫描下方小程序码(或长按识可以直接体验。


你可以选择购买一个模版,结合着系列教程更好的学习。微信扫描下方图中二维码(或长按识别)可以前往我的微信小商店购买模版,购买后备注“泡泡龙模版”即可




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


想学做游戏?欢迎加入我的年度游戏开发课程,面向零基础新手。用一年的时间,从零开始做出自己的游戏。欢迎你的加入,来跟一百多位同学一起学习。【点击这里】可了解年度课程详情。


欢迎加入【小游戏运营推广践行群】(点击这里了解详情),学习小游戏推广运营,成为少数的可以以一己之力做出游戏赚到钱的人。目前 80+ 小伙伴已加入,欢迎来和我们一起践行,探索小游戏推广的更多可能(注:学员加星球享半价优惠)。


这里是我制作的部分小游戏《俄罗斯拼图方块》《彩虹星球大冒险》《经典俄罗斯方块》《疯狂泡泡龙》大家可自行点击搜索体验。


推荐学习专栏:


从零开始制作一个经典1010游戏


从零开始制作一个连连看游戏


欢迎加个微信,交个朋友,朋友圈每日分享与做游戏有关的知识和内容,可以来围观。备注“学习做游戏”可免费领取原创的游戏开发教程资料大合集!非学员只接受付费咨询,不闲聊,望见谅。

长按识别关注

交个朋友!

·end·
—欢迎大家点赞,再看,分享—
—你的鼓励对我来说价值巨大—



小蚂蚁教你做游戏
跟小蚂蚁学习游戏制作开发和设计,学习游戏编程,这里有很多原创的游戏开发制作教程和独家课程,帮助你快速入门,使用无代码可视化的游戏制作软件,制作属于自己的游戏。
 最新文章