热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

自动补足算法是什么_消消乐类游戏!链式消除与自动补齐!

效果预览操作方法点击选中开始节点,按住拖动到相邻的节点,相邻节点添加至选择链中,沿着链往回拖,将会取消之前选择的节点

效果预览

c2d908b723c5d0155ab424b3026b632e.gif

操作方法

点击选中开始节点,按住拖动到相邻的节点,相邻节点添加至选择链中,沿着链往回拖,将会取消之前选择的节点,松开手指以后,选择的节点将会消失,空节点上方的节点将会自动掉落,上方自动随机生成新的数字方块掉落,如上面效果图所示。

实现流程

1. 确定选择的节点链,并记录,更新选中的节点位置为空,并回收;

2. 沿着 Y 轴正向纵向从左到右遍历(即时掉落反方向);

3. 若有空节点,则在最上方新填一个新的方块;

4. 若不是空节点,遍历下一个节点,直到沿着 Y 轴遍历完成;

5. 沿着 X 轴遍历完成后,做自动掉落动画;

6. 遍历的方式类似,依次从 X 轴正向,按照 Y 轴遍历所有非空节点,根据偏差量,计算运动距离和运动时间,动画播放以后,更新节点数组的信息;

7. 遍历矩阵上方的新增节点,按照 6 中类似的操作播放掉落动画;

实现算法

首先,是做选择节点的消除操作,比如下图,是我选择的节点链,为了便于讲解,本文会把显示缩小 0.5 倍进行显示,后文中图类似。

a6dfe83ef5a8e57e99ede94e7bb55a5a.png

通过上一步记录的选择节点链,进行消除,消除以后,显示的就是下图效果(每次游戏生成的随机数是不一样的,所以每个图的数字对不上,但是位置都是固定的几个位置,看的时候,需要注意)。

23c453e17e143073a1d285ec9d4d047b.png

消除格子以后,就需要额外的补齐,消除了几个,就在屏幕上方补充几个,补充的时候,需要根据补充的有多少,注意 Y 轴显示位置,显示出来的效果就是下图所示。

7e52781e54199368e062d4ac5a8f307b.png

接下来,就是做动画了,动画的思路,主要是计算每个格子,从上方掉落到下方,需要跨越的间隔,在统计的时候,从屏幕下方往屏幕上方开始做动画,有利于动画的控制。而动画,分为 2 部分,原屏幕中的和新增加的节点。

0be56dc4e02fb2a23aa91a1ee6920808.png

先进行原节点的动画控制,按照单元格,各自做自己的动画,同时播放,就会出现整体掉落的效果。

6e052408a66493467a4c7702fc86452d.gif

接着,就是上方新增的节点,播放动画,实现方式类似上一步的动画控制,连在一起的实现效果就是下图所示。

490d2ea2318582c1c66ff56274c80ca8.gif

最后,对显示的部分,做遮罩处理,只显示想要显示的区域,就完成了该部分内容了。

c2d908b723c5d0155ab424b3026b632e.gif

思路说明

由于还在做,没有完全开发完,代码随时可能会修改,所以本游戏的后续文章中,尽量讲解思路,不贴代码,以免看的时候稀里糊涂的,产生误解,等游戏完全做完以后,再放开代码,如果感兴趣,欢迎关注。

游戏介绍

完整的游戏尚未做完,具体玩法是,屏幕上会随机一个数字,玩家通过选择节点链,若节点链上所有数字之和等于随机的数字,则得分,否则失败。后续更新,将会陆续分享,扫码关注公众号!

往期小工推荐

点击标题即可阅读



推荐阅读
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 数据结构系列1 数组和链表
    数组,链表,l ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • LeetCode笔记:剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
    本文介绍了LeetCode剑指Offer 41题的解题思路和代码实现,主要涉及了Java中的优先队列和堆排序的知识点。优先队列是Queue接口的实现,可以对其中的元素进行排序,采用小顶堆的方式进行排序。本文还介绍了Java中queue的offer、poll、add、remove、element、peek等方法的区别和用法。 ... [详细]
  • 给定一个二维平面上的一些点,通过计算曼哈顿距离,求连接所有点的最小总费用。只有任意两点之间有且仅有一条简单路径时,才认为所有点都已连接。给出了几个示例并给出了对应的输出。 ... [详细]
  • 本文详细介绍了PHP中与URL处理相关的三个函数:http_build_query、parse_str和查询字符串的解析。通过示例和语法说明,讲解了这些函数的使用方法和作用,帮助读者更好地理解和应用。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Excel数据处理中的七个查询匹配函数详解
    本文介绍了Excel数据处理中的七个查询匹配函数,以vlookup函数为例进行了详细讲解。通过示例和语法解释,说明了vlookup函数的用法和参数的含义,帮助读者更好地理解和运用查询匹配函数进行数据处理。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
交通运输程俊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有