消除游戏中宝石下落的原理和实现

简介: 在消除游戏中,发生消除之后,会留下空白位置。此时,如果上方有其它的宝石,那这些宝石就会下落填充空白位置。今天我们就来了解一下宝石下落的方法以及实现。

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


在消除游戏中,发生消除之后,会留下空白位置。此时,如果上方有其它的宝石,那这些宝石就会下落填充空白位置。今天我们就来了解一下宝石下落的方法以及实现。

下落原理

如图,用线画出来的红色宝石是满足消除条件的,它们会被消除,产生空白位置。消除过后,看起来是下面这样。

来观察一下这些空白,在第一列中,有一个空白,将上方的黄色宝石和蓝色宝石同时向下移动一个位置,可以完成填充;第二列中,有连续的两个空白,将上方的黄色宝石和绿色宝石同时向下移动两个位置,可以完成填充;第三列中,有两个不连续的空白,需要将黄色的宝石向下移动一个位置,将绿色的宝石向下移动两个位置,才能完成填充。


在寻找方法的时候,通常我们首先会通过观察来寻找规律,一旦找到了规律,就能很容易找出解决方案。但是对于“宝石下落”来讲,貌似是没有明显的规律的,一列中有几个空白位置?这些空白位置是连续的?还是不连续的?这些貌似都没有规律。


以空白位置为关注点的话,找不到明显的规律。那我们就试着切换一下关注点,关注消除后剩余的宝石。

第一列有两个宝石,第二列两个宝石,第三列有两个宝石......貌似是有点儿规律了。忽略掉空白位置,我们从每一列的下方开始,向上寻找宝石,每找到一个宝石就为它设置一个编号,宝石的编号依次增加。

发现规律了吗?宝石的编号就是它要下落到的位置的行号。

获取表格中的一列,然后从下向上依次检查每个格子,空白位置跳过,如果格子里有宝石,就为这个宝石设置一个编号,编号依次增加 1,这样检查完一列之后,下落宝石的目标位置就知道了。接着,像这样检查表格中的每一列,当所有的剩余宝石都编号完成后,再统一进行下落处理。


这个就是宝石下落的实现原理了。


下落实现


首先创建 3 个列表,一个用于为宝石设置编号,一个用于记录哪些宝石需要下落,一个用于记录下落宝石的下落目标位置。


接着,来看一下下落的积木逻辑。



这里有一点儿可能比较难理解,就是如何使用一个列表来记录宝石的编号。

如图,以第一列为例,从下向上依次查看每一个格子,第一个格子是空白位置,跳过。第二个格子有宝石,将第二个格子的宝石的索引加入到列表中(列表的第一个位置),接着第三个格子有宝石,将第三个格子的宝石的索引加入到列表中(列表的第二个位置)。检查完一列后,在最终的列表中,项的内容是要下落宝石的索引,位于第几项,就是下落宝石的目标位置行号。


最后,再来看一下宝石上的下落处理积木。



收到通知后,首先判断一下自己是否需要下落,如果需要的话,更新的自己的行号和索引,更新网格数据表格中的数据,最后将自己向下移动到新位置上。


最后,来看一下宝石下落的效果。



以上就是下落的原理和方法了,基本上适用于所有需要进行下落处理的消除游戏。


在寻找解决方法时,我们首先关注的是空白位置,发现空白位置找不到规律后,我们转换了一下角度,关注剩余的宝石,最后找到了解决方案。


这或许能给我们带来一点儿启发。在寻找解决方案的时候,如果一个方向行不通,就不妨换个方向,很可能在转换方向之后,问题就变得清晰明了容易解决了。



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

这里是我的游戏开发课程服务,不只是一门课,而是围绕着新手学习做游戏有关的一整套服务。致力于帮助更多的人学会做游戏并做出自己的游戏,欢迎来跟 69 位同学一起学习做游戏。【点击这里】了解课程服务详情。

这里是小蚂蚁的小游戏系列,闲暇之余希望能给你带来片刻的放松和愉悦。无需下载安装,点击下方的游戏卡片就可以直接玩啦!








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

相关文章
|
数据采集 运维 JavaScript
淘宝反爬虫机制的主要手段有哪些?
淘宝的反爬虫机制包括用户身份识别与验证、请求特征分析、页面内容保护、浏览器指纹识别和蜜罐技术。通过User-Agent识别、Cookie验证、账号异常检测、请求频率限制、动态页面生成、验证码机制等手段,有效防止爬虫非法抓取数据。
|
存储 关系型数据库 大数据
PolarDB 大数据处理能力及其应用场景
【8月更文第27天】随着数据量的爆炸性增长,传统的数据库系统面临着存储和处理大规模数据集的挑战。阿里云的 PolarDB 是一种兼容 MySQL、PostgreSQL 和高度可扩展的关系型数据库服务,它通过其独特的架构设计,能够有效地支持海量数据的存储和查询需求。
497 0
|
Android开发 数据安全/隐私保护 iOS开发
ios和安卓测试包发布网站http://fir.im的注册与常用功能
ios和安卓测试包发布网站http://fir.im的注册与常用功能
889 0
ios和安卓测试包发布网站http://fir.im的注册与常用功能
|
算法 开发工具 索引
宝石方块游戏中三消查找算法的原理和实现
嗨!大家好,我是小蚂蚁。 今天这篇文章分享一下三消查找算法的原理和实现,其实三消的机制最早源于《宝石方块》这款经典游戏,如今三消已经属于一个游戏品类了。 最近刚好正在制作一款宝石方块游戏,顺便讲一下其中的三消查找算法。一直以为之前写过了,找了一圈发现并没有,今天就在这里补上。
566 0
|
数据可视化 数据挖掘 Linux
数据可视化丨优雅的绘制带显著性标记的箱线散点图,主要使用ggsignif和ggplot2
数据可视化丨优雅的绘制带显著性标记的箱线散点图,主要使用ggsignif和ggplot2
|
存储 Kubernetes 安全
分享实录 | 云效架构师手把手教你搭建 DevOps 平台
近日,阿里巴巴旗下企业级一站式DevOps平台——阿里云·云效正式开启公测,为了让广大开发者更好地了解“新云效”,《云效说码》栏目特别策划了《为云研发而生 解密云效公测版专场》系列分享,邀请了多位阿里巴巴技术专家通过视频直播的方式与大家在线交流,分享云效产品的亮点和技术优势。本系列分享共有五节内容,本文整理自阿里巴巴云效研发解决方案架构师红英的分享《云效架构师手把手教你搭建 DevOps 平台》。
分享实录 | 云效架构师手把手教你搭建 DevOps 平台
|
新零售 自然语言处理 数据可视化
解决方案应用实例 |数据智能驱动,老乡鸡迈入数字化新赛道
借助强大赋能的阿里云,老乡鸡完成数字化的奋力一跃:线下门店从800多家扩至1000多家,员工从1.6万人增至2万人,总营收增长三成。为老乡鸡未来3-5年的发展打下了坚定的技术底座,实现了老乡鸡全集团业务全链路、全渠道、全域的数智化运营。
928 0
解决方案应用实例 |数据智能驱动,老乡鸡迈入数字化新赛道
|
数据采集 监控 小程序
在国内所有云服务器中,最稳定的就属阿里云服务器了,今天我们具体阿里云服务器可以干嘛?八大用途你都知道吗?
很多人问,为什么要购买阿里云服务器呢?阿里云服务器用途有哪些?以前,当我们需要建个新的网站时,是非常麻烦且繁琐的一件事情,这意味着除了需要花大价钱买服务器外,还需要部署、测试、验证等一系列操作。而在云服务器出现之后,这些就都不是问题了。
928 0
|
云安全 人工智能 大数据
阿里云ACP认证考试过关心得经验及考试费用详解
阿里云ACP专业认证考试值得考吗?当然值得!云吞铺子来说说ACP认证考试过关心得、经验分享、考试费用、报名考场等相关问题: ACP认证种类范围 ACP认证可以分为五个领域,即云计算、大数据、云安全、人工智能和中间件。
8428 0
阿里云ACP认证考试过关心得经验及考试费用详解
|
域名解析 弹性计算 网络协议
阿里云/万网CNAME配置的详细图文流程 新手必看教程
当你在阿里云CDN添加域名成功后,会自动分配对应的CNAME地址。想启用CDN加速服务,要把域名解析记录指向CNAME地址,访问加速域名的请求才能转发到CDN节点上,达到加速效果。本文档以域名在阿里云解析(原万网)为例。