前言

三消游戏核心算法总结

需求分析

这里只说最经典的玩法,就是三个同色相连的就消除,其他的玩法,比如全行消除、全屏同色消除、连击消除等就先不管。

一个三消游戏流程:

  1. 开局随机生成舞台,包含不同颜色的方块。
  2. 拖动后有三个同色方块连起来,就消除,如果没有就不能拖动。
  3. 消除计算分数,一局游戏时间有限制。

游戏流程

简化的游戏流程控制伪代码

void Start(){生成舞台;
}void Update(){if(gameOver){return;}if(时间结束){结束UI;gameOver = true;}
}

在update中只判断游戏时间,玩家只有拖动输入,有UI事件去控制。

舞台生成

首先舞台的大小要确定,比如是8*8的,这样要提前创建好64个槽位。

要有槽位类型,或者说是物体类型,注意物体类型和物体颜色是不同的。

物体类型可以有空类型,普通颜色类型,癞子类型等,能提供多种玩法,简化来说,这里只有空类型和普通颜色类型。

在64个槽位随机创建不同的普通颜色类型物体。

生成动画要确定,原地生成的话会简单一些,比较普遍的是从上方掉落。

生成之后有先调一遍消除逻辑,具体逻辑后面再说。

全部检测消除(){foreach(方块 in 舞台){if(方块 可消除){获得可消除方块列表,destroy每一个方块,在原位置新建一个空类型方块;}}if(有消除行为){填充;全部检测消除;}
}

填充也有不同的填充方式,原地随机生成填充是最简单的,但常见三消都是上面的落下来,新生成的在最上面。

落下来的填充方式,需要一行行填充,也就是可能填充多次。

填充(){for(从倒数第二行开始,遍历每一行)for(遍历该行的每一个方块){if(该方块下方的方块类型是空类型){该方块下移,该方块原本位置替换为空类型}}填充第一行;if(还有空的){填充;}
}

输入与消除

游戏的输入只有鼠标拖动,利用UI事件OnMouseEnter、OnMouseDown、OnMouseUp可以判断当前拖动的物体和拖动的目的地。

这样需要给每个方块物体加上一个脚本来监听这三个事件:
nMouseDown获得当前正拖动的方块,
OnMouseEnter获得当前拖动到的位置,
OnMouseUp表示拖动结束,进行消除判断。

判断是否可消除,就是看拖动后更改的两个方块,对应的行列是否满足同色方块>=3个。

如果可消除,就调全部消除逻辑,再重新填充。
伪代码如下

if(方块1可消除 || 方块2可消除){获得方块1可消除列表,destroy每一个方块,在原位置新建一个空类型方块。获得方块2可消除列表,destroy每一个方块,在原位置新建一个空类型方块。计算分数;填充;
}

整体大致就这样吧,略有出入,大差不大,算法如此,但是还有动画、音效等。

【GamePlay】三消核心算法相关推荐

  1. 【GamePlay】泡泡龙核心算法

    前言 泡泡龙游戏核心算法总结 好像自己接触的第一个电子游戏就是祖玛泡泡龙. 需求 这个和三消还是有很多相似之处,都是要消除,但是舞台.消除方式.消除后的填充方式不太一样. 游戏截图如下,如图,和三消的 ...

  2. 阿里资深AI工程师教你逐个击破机器学习核心算法

    01 近年来,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个 IT 界. 所有的互联网公司,尤其是 Google 微软,百度,腾讯等巨头,无 ...

  3. 核心算法缺位,人工智能发展面临“卡脖子”窘境

    http://www.xinhuanet.com/politics/2019-04/30/c_1124435131.htm "徐匡迪之问"引发业界共鸣-- 核心算法缺位,人工智能发 ...

  4. SQL关键字转换大写核心算法实现

    1 不跟你多废话 上代码! /// <summary>/// SQL关键字转换器/// </summary>public class SqlConverter : IKeywo ...

  5. x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode()

    x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode() 宏块编码函数x264_macroblock_encode()是完成变换与量化的主要函数,而x264_m ...

  6. 【视频课】零基础免费38课时深度学习+超60小时CV核心算法+15大Pytorch CV实践案例助你攻略CV...

    计算机视觉中大大小小可以包括至少30个以上的方向,在基于深度学习的计算机视觉研究方向中,图像分类,图像分割,目标检测无疑是最基础最底层的任务,掌握好之后可以很快的迁移到其他方向,比如目标识别,目标跟踪 ...

  7. 医疗软件产品核心算法部分说明--转载截取

    各方资料汇总说明 核心算法概述 算法类型: 公认成熟算法:公开文献专利标准.原理简单明确.上市超过四年且无不良时间.公认成熟算法名称.原理.用途,全新算法列明名称.原理.用途,并提供验证资料. 全新算 ...

  8. kylin分析引擎:运行原理、维度和Cube等名词解释、核心算法

    架构 kylin是一款分析引擎,最常用的数据源是Hive.1.5版本之后数据源增加了kafka,但最常用的仍然是Hive.但是Hive查询比较慢,Kylin解决了这一问题. 大致流程: 第一步:从Hi ...

  9. 重磅下载!业界首本强化学习应用宝典,阿里核心算法团队联袂打造

    作为一名技术人,你是否曾有过这样的疑惑: 人工智能大热,作为一名传统程序员,该如何转型或学习? 网上AI教程.书籍,质量参差不齐,如何找到真正专业的资源? AI理论遍地皆是,但几乎都在纸上谈兵,该从哪 ...

最新文章

  1. 02027_线程池练习:返回两个数相加的结果
  2. 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)
  3. linux e514写入错误,Linux上使用vim编辑文件保存时报错:E514: write error (file system full?)...
  4. Python实例讲解 -- 解析xml
  5. 为什么要减少代码中该死的 if else 嵌套
  6. centos7 java 1.8_Centos7下安装Java JDK 1.8
  7. 移动端混合式App开发框架
  8. duilib隐藏(显示)任务栏图标方式
  9. 小学4年级计算机课作业题目,部编版小学语文四年级下册课堂同步作业试题及答案(全册).doc...
  10. php定时自动发送邮件(从数据库取数据)(超详细版本)
  11. 第十章 DCEP简介
  12. 一键反推食谱,与狗对话,识别女票表情…愚人节,AI 也被玩坏了...
  13. Python爬虫爬取天天基金网
  14. 11月营销活动必备:怎样策划网站活动?
  15. 有金币系统的优质生存服务器,我的世界1.8-1.12梦境世界生存服务器
  16. 麻省理工《算法导论》视频下载
  17. pygame实现背景图片转换
  18. linux基本命令(11)——nl命令
  19. 软件需求工程 课堂笔记7
  20. APT组织Reaper新Dropper公开:NOKKI和DOGCALL存在关联性

热门文章

  1. 通过正则表达式快速获取电影的下载地址!正则-永远滴神!
  2. 关于eNSP的交换机配置(新手入门款)
  3. ThinkPHP5实现极验滑动验证码geetest功能
  4. Java实现简单的日历打印
  5. 整理汇总了一份常用的 Linux 软件!
  6. “纯C”实现——扫雷游戏(递归实现展开功能)
  7. 西门子1500的两个网口
  8. 【MySQL性能优化系列】百万数据limit分页优化
  9. 简单题-不用库函数,求解一个数字的平方根
  10. Verilog 语言编写 OV7725摄像头初始化寄存器库与模块的初始化