热门标签 | 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

思路说明

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

游戏介绍

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

往期小工推荐

点击标题即可阅读



推荐阅读
  • 由二叉树到贪心算法
    二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文介绍了一种基于选择排序思想的高效排序方法——堆排序。通过使用堆数据结构,堆排序能够在每次查找最大元素时显著提高效率。文章详细描述了堆排序的工作原理,并提供了完整的C语言代码实现。 ... [详细]
  • 本文将继续探讨前端开发中常见的算法问题,重点介绍如何将多维数组转换为一维数组以及验证字符串中的括号是否成对出现。通过多种实现方法的解析,帮助开发者更好地理解和掌握这些技巧。 ... [详细]
  • 华为智慧屏:超越屏幕尺寸的智能进化
    继全球发布后,华为智慧屏于9月26日在上海正式亮相,推出65英寸和75英寸版本。该产品不仅在屏幕尺寸上有所突破,更在性能和智能化方面实现了显著提升。 ... [详细]
  • 探讨如何修复Visual Studio Code中JavaScript的智能感知和自动完成功能在特定场景下无法正常工作的问题,包括配置检查、语言模式选择以及类型注释的使用。 ... [详细]
  • 优化网页加载速度:JavaScript 实现图片延迟加载
    本文介绍如何使用 JavaScript 实现图片延迟加载,从而显著提升网页的加载速度和用户体验。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 探讨在PHP开发中,如何选择使用Cookie或数据库来优化网站性能,特别是在处理用户保存的搜索结果时。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 深入解析ArrayList与LinkedList的差异
    本文详细对比了Java中ArrayList和LinkedList两种常用集合类的特性、性能及适用场景,通过代码示例进行测试,并结合实际应用场景分析其优缺点。 ... [详细]
  • 本文详细解释了为什么在成功执行移动赋值操作后,对象的析构函数会被调用,并提供了代码示例和详细的分析。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 本文探讨了符号三角形问题,该问题涉及由相同数量的“+”和“-”符号组成的三角形。通过递归回溯法,可以有效地搜索并计算符合条件的符号三角形的数量。 ... [详细]
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社区 版权所有