效果预览

操作方法

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

实现流程

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

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

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

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

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

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

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

实现算法

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

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

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

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

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

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

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

思路说明

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

游戏介绍

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

往期小工推荐  

点击标题即可阅读

第一篇丨链式选择和取消!

二维矩阵节点的链式消除和自动补齐!消消乐类游戏可参考!相关推荐

  1. 机器学习之数学基础(二)~数组、向量、矩阵、向量空间、二维矩阵

    1. 概述 在学习机器学习(machine learning)或模式识别(pattern recognition)过程中,我经常会困惑于向量.数组和矩阵这三种数据结构,而在学习张学工教授<模式识 ...

  2. 二维矩阵中的最大矩形面积--java实现

    一.原题: 给你一个二维矩阵,权值为False和True,找到一个最大的矩形,使得里面的值全部为True,输出它的面积. 样例: 给你一个矩阵如下: [[1, 1, 0, 0, 1],[0, 1, 0 ...

  3. 关于图的二维矩阵转为一维数组的理解。

    一开始看二维矩阵转为一维数组的时候还是有点懵的,为啥是N(N+1)/2呢,为啥不是N*N/2呢,这个矩阵明明是N*N的一个正方形啊,我要省一半空间直接除2不就行了,带着这个问题我观察了一下这个PPT里 ...

  4. python 搜索二维矩阵

    搜索二维矩阵 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入:m ...

  5. python 二维矩阵翻转

    二维矩阵翻转 # N * N的二维矩阵 # 沿上下中线翻转 # 沿左右中线翻转 # 沿-45度对角线翻转 # 沿45度对角线翻转matrix3 = [[1, 2, 3, 4, 5], [6, 7, 8 ...

  6. matlab找出二维矩阵中最大值的位置或者最小值的位置

    matlab寻找最大值或者最小值是通过max和min命令 对应二维矩阵寻找最大元素就是max(max(A)),注意二维矩阵要写两个max 找对应位置用find函数 举个例子: >> A=[ ...

  7. 20190110-用笨办法找到二维矩阵的鞍点

    1:找出一个多维数组的鞍点,即该元素在该行上最大,在该列上最小,也可能没有鞍点 a = [     [1,2,3,4],     [4,5,6,2],     [7,0,5,2],     [11,1 ...

  8. LeetCode 73矩阵置零74搜素二维矩阵75颜色分类

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...

  9. 【Matlab】如何对二维矩阵进行线性/非线性插值?

    1.Introduction 最近又遇到了矩阵插值(重采样)的问题,在最开始写博客的时候就写了篇关于 Excel 重采样的文章,不过在逐渐熟悉 Matlab 的过程中,还是决定看看能不能编程自动实现, ...

最新文章

  1. Day25 linux shell中的特殊符号与命令
  2. 物理层与综合布线【笔记】
  3. UA MATH636 信息论7 高斯信道
  4. 分隔list,让页面成多行多列遍列
  5. 利用xlrd,Python对excel读取文件
  6. 自己动手写ORM框架(六):实现查询功能FindById方法
  7. Python高级——mini_web框架(实现web框架接口,数据库连接)
  8. python为什么没有指针_Python中有指针吗?
  9. .NET Timer控件
  10. 中山大学Delphi视频教程 共51课
  11. 安卓双进程保活的代码
  12. limesurvey的问卷类型
  13. 菜鸟python爬虫scrapy_Python爬虫(Scrapy)爬取秀人网
  14. MFC 对话框常用控件详解
  15. 网络工程师基础--流水线吞吐率
  16. eclipse的安装和汉化
  17. Android集成友盟推送服务
  18. yolo调用海康威视网络摄像头踩坑记
  19. 倒计时Text显示控制
  20. C语言--杨辉三角形

热门文章

  1. android嵌入式键盘,嵌入式系统的键盘设计
  2. 通过sql去掉字段中的html标签
  3. HTML标签单击之后维持active状态
  4. 人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS
  5. 深入浅出 pairwise 算法
  6. 零基础学习CANoe Panel(1)—— 新建 Panel
  7. 纯键盘操作电脑,无鼠标操作
  8. scrapy框架初识02
  9. 韩松老师模型压缩--三步剪枝法学习笔记
  10. 【报告分享】中国职场流动趋势年度报告2021-脉脉数据研究院(附下载)