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

简介: 嗨!大家好,我是小蚂蚁。上一节中,我们学习了泡泡龙游戏中的查找算法,这个算法可以帮助我们找到所有相邻的相同颜色的泡泡,在查找完泡泡之后,再通过判断满足条件的泡泡的数量是否大于等于 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

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

小程序

圆点守护者

为守护家园而战。

小程序

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

相关文章
|
Web App开发 自然语言处理 安全
文字点选行为验证码(KgCaptcha快速入门)
凯格行为验证码 - KgCaptcha,采用业界通用的API接口方式,对接轻松简单,即可享受带来的产品服务能力。自定义样式及风控等级,完全个性化的设置,与你的应用完美融合。自由定义验证场景、安全策略、素材管理、自定义底图、拼图素材、验证模式、验证偏好、背景图片、Logo、跳转链接。定制需求由业务专家制定解决方案,支持私有化部署、多语言切换。
1120 0
文字点选行为验证码(KgCaptcha快速入门)
|
缓存 NoSQL 架构师
Redis 三种批量查询技巧,高并发场景下的利器
在高并发场景下,巧妙地利用缓存批量查询技巧能够显著提高系统性能。 在笔者看来,熟练掌握细粒度的缓存使用是每位架构师必备的技能。因此,在本文中,我们将深入探讨 Redis 中批量查询的一些技巧,希望能够给你带来一些启发。
Redis 三种批量查询技巧,高并发场景下的利器
|
编解码 开发工具 Android开发
Android平台RTSP轻量级服务|RTMP推送摄像头或屏幕之音频接口设计
好多开发者在做Android平台录像或者RTSP轻量级服务、RTMP推送相关模块时,对需要设计哪些常用接口会心存疑惑,本文主要以大牛直播SDK(官方)为例,简单介绍下Android平台直播推送SDK所有音频相关的接口,感兴趣的开发者可以看看。
272 0
|
人工智能 图形学
PhysGen3D:清华等高校联合推出,单图秒变交互式3D场景
PhysGen3D是清华等高校联合开发的创新框架,通过单张图像重建3D场景并模拟物理行为,实现从静态图像到动态交互的突破性转换。
417 15
PhysGen3D:清华等高校联合推出,单图秒变交互式3D场景
|
人工智能 自然语言处理 数据可视化
autoMate:无需视觉模型!用DeepSeek-V3/R1就能实现自动化操作电脑,支持任何可视化界面
autoMate是一款基于AI和RPA的本地自动化工具,通过自然语言实现复杂任务的自动化操作,支持本地部署,确保数据安全和隐私,适合需要高效处理重复性工作的用户。
893 1
autoMate:无需视觉模型!用DeepSeek-V3/R1就能实现自动化操作电脑,支持任何可视化界面
|
XML Java 数据库连接
Mybatis实现RBAC权限模型查询
通过对RBAC权限模型的理解和MyBatis的灵活使用,我们可以高效地实现复杂的权限管理功能,为应用程序的安全性和可维护性提供有力支持。
456 5
|
消息中间件 存储 缓存
RabbitMQ 集群和镜像队列
【1月更文挑战第11天】 一、clustering(集群) 1、使用集群的原因 2、搭建步骤 2.1、拉取镜像 2.2、创建三个RabbitMQ容器节点 2.3、集群搭建 二、镜像队列 1、使用镜像的原因 2、搭建步骤
884 90
|
存储 JSON JavaScript
js中JSON的使用
介绍JSON的基本概念和在JavaScript中的使用方式,包括JSON格式的语法规则、使用`JSON.stringify()`和`JSON.parse()`方法进行对象与字符串的转换,以及处理JSON数组数据。
js中JSON的使用
|
Java 调度 Python
解决方案:APScheduler定时任务不执行,报错Run time of job ... was missed by ...
解决方案:APScheduler定时任务不执行,报错Run time of job ... was missed by ...
2564 0
解决方案:APScheduler定时任务不执行,报错Run time of job ... was missed by ...
|
测试技术
测试报告模板
前言: 写好一份测试报告,是身为测试工程师必备的能力! 在这里我列出自己设计测试报告模板,供大家参考,欢迎大家提出不同的建议。 一、测试概况 本次使用excel编写的报告,如果用word编写,页眉可附上公司logo, XX测试部   二、Bug详情 关于Bug部分,可从Bug管理系统中导出。
6457 0

热门文章

最新文章