泡泡龙游戏开发实战教程(5):核心查找匹配算法

简介: 泡泡龙游戏开发实战教程(5):核心查找匹配算法

嗨!大家好,我是小蚂蚁。我们今天来继续学习泡泡龙游戏中最核心的东西:查找匹配算法

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

先来看一张图片。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关文章
|
3月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
95 4
|
3月前
|
存储 缓存 算法
前端算法:优化与实战技巧的深度探索
【10月更文挑战第21天】前端算法:优化与实战技巧的深度探索
34 1
|
4月前
|
人工智能 算法 安全
深度讲解-互联网算法备案指南和教程
随着人工智能和大数据技术的发展,互联网算法在内容推荐、用户画像等领域日益重要,但也带来了安全风险和合规挑战。国家互联网信息办公室为此发布了《互联网算法备案管理规定》,要求具有舆论属性或社会动员能力的互联网信息服务提供者进行算法备案,以确保算法透明性和合规性,维护网络健康秩序。唯安创远AI合规专家将解析备案的必要性、流程及其对企业的影响,帮助企业顺利完成备案。
328 3
|
4月前
|
大数据 UED 开发者
实战演练:利用Python的Trie树优化搜索算法,性能飙升不是梦!
在数据密集型应用中,高效搜索算法至关重要。Trie树(前缀树/字典树)通过优化字符串处理和搜索效率成为理想选择。本文通过Python实战演示Trie树构建与应用,显著提升搜索性能。Trie树利用公共前缀减少查询时间,支持快速插入、删除和搜索。以下为简单示例代码,展示如何构建及使用Trie树进行搜索与前缀匹配,适用于自动补全、拼写检查等场景,助力提升应用性能与用户体验。
73 2
|
4月前
|
算法 搜索推荐 开发者
别再让复杂度拖你后腿!Python 算法设计与分析实战,教你如何精准评估与优化!
在 Python 编程中,算法的性能至关重要。本文将带您深入了解算法复杂度的概念,包括时间复杂度和空间复杂度。通过具体的例子,如冒泡排序算法 (`O(n^2)` 时间复杂度,`O(1)` 空间复杂度),我们将展示如何评估算法的性能。同时,我们还会介绍如何优化算法,例如使用 Python 的内置函数 `max` 来提高查找最大值的效率,或利用哈希表将查找时间从 `O(n)` 降至 `O(1)`。此外,还将介绍使用 `timeit` 模块等工具来评估算法性能的方法。通过不断实践,您将能更高效地优化 Python 程序。
73 4
|
3月前
|
人工智能 算法 Java
【搜索算法】数字游戏(C/C++)
【搜索算法】数字游戏(C/C++)
|
5月前
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点讲解了如何使用 Kotlin 实现 AES-256 的加密和解密,并提供了详细的代码示例。通过生成密钥、加密和解密数据等步骤,展示了如何在 Kotlin 项目中实现数据的安全加密。
187 1
|
5月前
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点展示了如何使用 Kotlin 实现 AES-256 的加密和解密,提供了详细的代码示例。
103 2
|
5月前
|
机器学习/深度学习 存储 算法
强化学习实战:基于 PyTorch 的环境搭建与算法实现
【8月更文第29天】强化学习是机器学习的一个重要分支,它让智能体通过与环境交互来学习策略,以最大化长期奖励。本文将介绍如何使用PyTorch实现两种经典的强化学习算法——Deep Q-Network (DQN) 和 Actor-Critic Algorithm with Asynchronous Advantage (A3C)。我们将从环境搭建开始,逐步实现算法的核心部分,并给出完整的代码示例。
382 1
|
5月前
|
机器学习/深度学习 算法 数据挖掘
【白话机器学习】算法理论+实战之决策树
【白话机器学习】算法理论+实战之决策树
98 0

热门文章

最新文章