三消游戏 - 方阵消除

0 规则

只要三种同色的在一行或一列即可消除

1 数据结构

一个色块含这些内容

  • 色块的类型:type
  • 色块的颜色:color
  • 色块空间位置: Index(row, col)
  • 色块序列位置: IndexCount
  • 色块图形位置:Position

2 坐标转换

色块的空间,序列和位置是可以相互转换的

// Index -> IndexCount
IndexCount = row+col*ROW_MAX;
// IndexCount -> Index
Index = {IndexCount%ROW_MAX, floor(IndexCount/ROW_MAX)};
// Index -> Position
Position = {Index.row*Unit_WDistance, Index.col*Unit_HDistance};
// Position -> Index
Index = {round(Position.x/Unit_WDistance), round(Position.y/Unit_HDistance)};

3 方阵

二位矩阵,对矩阵作出标示,可以改变二维矩阵为任意形状


不规则二维矩阵


4 预判

  • 检测当前点1并检测同向相隔一格的相同点2,当成立后,检测当前临格的隔壁点3是否为相同点,如果符合条件,说明可消除


  • 检测当前点1并检测相邻点相同2,当成立后,检测第三个位置的周围点3是否有相同点


  • 检测方向为从左向右,从上向下检测


5 消除检测

  • 单向三连最好检测,顺序检测临近的颜色即可
  • 纵横都存在的情况下,其实纵向和横向单独去检测即可,对于横向不进行纵向忽略,对于纵向,不进行横向忽略(同向忽略已检测的点)

6 添加/塌方

消除产生的空穴,需要及时添加

  • 消除后会产生空隙,算出每列上空需要几个新色块来填补空隙。第一个图需要3个 , 剩下两个图需要5个
  • 塌方的规则
    • 如果塌方上部是死区,则从斜上方下落
    • 优先从左上方落下,其次是右上方
    • 如果离两斜上方超过一个单位,则从横向挤压
  • 不规则形状的塌方方式


  • 第二种不规则方式塌方


6.1 开心消消乐的塌方方式是传送,不进行斜向挤压,传送会从上到下穿过阻碍掉落到指定位置,传动也可以分开不同区域,进行错位传送,挺有创意的方法

7 循环

当执行#6时,可能会产生新的可消除元素,这时候,需要进行重复检测
->删除检测->添加->删除检测->
这样循环下去,直到无法删除/无法添加为止

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘...
    大川无敌阅读 13,978评论 0 29
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,059评论 0 13
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,019评论 3 119
  • 《晓说》这个由高晓松主持的节目有空听听还挺有意思。其中我听到了一个观点,在人类发展史中,到底是人类驯服了小麦,使小...
    小卡卡爱阅读 890评论 0 0
  • 什么是真自由?以前想当然的以为自由是我想做什么就做什么,自由有两种形式,如永澄老师的图所示: ·free to :...
    盛某阅读 274评论 0 0