消除游戏中图标下落的原理和实现

简介: 消除游戏中图标下落的原理和实现

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

在消除游戏中,发生消除之后,会留下空白位置。此时,如果上方有其它的宝石,那这些宝石就会下落填充空白位置。今天我们就来了解一下消除游戏中图标下落的原理以及实现,这个可以应用于所有的消除游戏中(纯物理消除游戏除外)。

下落原理

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

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

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

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

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

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

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

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

下落实现

以下是使用微信小游戏制作工具的实现方式,其它游戏引擎的实现原理也都类似。

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

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

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

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

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

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

以上就是消除游戏中图标下落的原理和方法了,基本上适用于所有需要进行下落处理的消除游戏,什么三消,点消,连线消都一样,又是一个万金油式的好方式。

在寻找解决方法时,我们首先关注的是空白位置,发现空白位置找不到规律后,我们转换了一下角度,关注剩余的宝石,最后找到了解决方案。这或许能给我们带来一点儿启发,在寻找解决方案的时候,如果一个方向行不通,就不妨换个方向,很可能在转换方向之后,问题就变得清晰明了容易解决了。

相关文章
常用图像卷积核类型小结
卷积操作的主要目的就是对图像进行降维以及特征提取; 1.卷积核往往是行数和列数均为奇数的矩阵,这样中心较好定位; 2.卷积核元素的总和体现出输出的亮度,若元素总和为1,卷积后的图像与原图像亮度基本一致;若元素总和为0,则卷积后的图像基本上是黑色,其中较亮的部分往往就是提取出图像的某种特征; 3.滤波实际上就是Same模式的卷积操作,也就是说滤波后图像的大小不变,各种滤镜和照片的风格化就是使用不同的滤波器对图像进行操作。因此卷积核、滤波器本质上都是一个东西; 4.高通滤波器(High Pass Filter, HPF)表示仅允许图像中高频部分(即图片中变化较剧烈的部分)通过,往往用于对图像
|
监控 算法 测试技术
性能优化之几种常见压测模型及优缺点 | 陈显铭
上一篇讲的是《性能优化的常见模式及趋势》,今天接着讲集中常见的压测模型。通过上一章我们大概知道了性能优化的一些招式,但是怎么发现有性能问题,常见的模式还是需要压测。
6103 0
|
小程序 Java Go
用golang实现一个小程序商城后台系统(moshopserver)
用golang实现一个小程序商城后台系统(moshopserver) golang和c/c++比起来是一门新的语言,一直想学,网上搜集了一些资料,有些人说很容易上手,确实是这样,和C/C++比起来,少了很多乱七八糟的语法。
3518 0
用golang实现一个小程序商城后台系统(moshopserver)
|
运维 监控 架构师
饿了么技术往事(上)
作为一个互联网创业公司,饿了么从初创到壮大,在移动互联网时代,业务量和技术团队的体量经历了10倍增长,这其中的经历,是互联网领域许多创业公司技术团队的一个缩影。在这里把我们成长过程中的体会和教训记录下来。——黄晓路
15562 80
饿了么技术往事(上)
|
网络协议 安全 机器人
互联网的发展简史—web
前言:互联网是我现在生活所离不开的一个东西,但是你知道互联网的前世今生吗?本文将讲解互联网的发展史,以及很火的元宇宙概念。
2871 1
 互联网的发展简史—web
|
消息中间件 NoSQL Dubbo
Java后端开发面试总结【25个技术专题】超详细!
编程的世界永远向所有热爱编程的人开放,这是一个自由,平等,共享的世界,我始终是这样坚信的。
900 0
|
存储 缓存 文件存储
IIS应用使用虚拟目录功能,将数据目录存放到阿里云SMB文件系统上实现弹性存储
阿里云SMB文件系统具有超大容量以及弹性扩展的能力,但是兼容性和性能相比虚拟机系统盘有差距。针对这个特性,可以将IIS应用的数据部分存放在云上文件系统中,应用核心还是在系统盘上运行,通过IIS虚拟目录功能将IIS应用与阿里云SMB文件系统的目录相连。 本文详述了如何配置IIS虚拟目录到阿里云SMB文件系统,实现存储海量扩展。
1270 0
IIS应用使用虚拟目录功能,将数据目录存放到阿里云SMB文件系统上实现弹性存储
|
机器学习/深度学习 人工智能 固态存储
又一家!天数智芯天垓100 产品卡与龙蜥操作系统完成产品兼容互认证
天数智芯天垓100 产品卡与龙蜥操作系统(Anolis OS)8 完成并通过相互兼容性测试认证,双方进行严格测试后,结果显示:相互兼容,功能正常,运行稳定。
又一家!天数智芯天垓100 产品卡与龙蜥操作系统完成产品兼容互认证
|
分布式计算 安全 Hadoop
Hadoop运行模式(一)、本地运行模式(官方WordCount)、完全分布式运行模式(开发重点)、scp安全拷贝、rsync 远程同步工具、xsync集群分发脚本、同步环境变量配置(root所有着)
Hadoop运行模式(一)、本地运行模式(官方WordCount)、完全分布式运行模式(开发重点)、scp安全拷贝、rsync 远程同步工具、xsync集群分发脚本、同步环境变量配置(root所有着)
Hadoop运行模式(一)、本地运行模式(官方WordCount)、完全分布式运行模式(开发重点)、scp安全拷贝、rsync 远程同步工具、xsync集群分发脚本、同步环境变量配置(root所有着)

热门文章

最新文章