消消乐、candy crush类三消游戏程序逻辑分析

最近在开发一款类似消消乐的三消游戏,在碰到实现斜方向下落的时候卡住了很长时间。好几天没有思路,原本的思路是一次性预判多个宝石的一连串运动路径,运用缓动运动队列来实现宝石运动路径,例如 下落->滑落->下落。用这种方式虽然会提高性能,但发现总是无法预判所有宝石运动路径,可能性太多了,比如某一个宝石的下落原本只会朝下,但加入了斜下落后会有三种可能,左下,下,右下,20个宝石的下落就会有3的20次方种可能,其产生的可能性会呈指数级别增加,是不可能预测的,也就是用动画队列来实现完全不可能。于是放弃这种思路,改用每个宝石的每次运动都进行一次判断下次运动方式的方法,每次运动以一个方格为单元,运动方式可以是下落,左下落或右下落。原本判断滑落的条件改为填充空白,每次消除和每次运动都会产生新的空白,用上方、左上方或右上方的宝石来填充这些空白,由于选择哪个方向的宝石来填充的判断条件和判断下落的方式是一样的。所以我们可以分别判断上方、左上方和右上方的运动方式。而匹配消除宝石的时机发生在宝石停止运动或者是玩家交换宝石的时候。由此可见玩家交换宝石是整个运动过程的触发扳机,其整个逻辑过程如下图所示:

时间: 2024-10-13 12:05:27

消消乐、candy crush类三消游戏程序逻辑分析的相关文章

Unity3D益智三消类“快乐消消乐”(产品级)实战

课程目录:第1课.项目演示片第2课.三消类游戏市场前景第3课.三消基本原理介绍第4课.搭建游戏框架A第5课.搭建游戏框架B_建立核心脚本第6课.搭建游戏框架C_建立界面UI第7课.游戏界面与框架搭建完毕第8课.消除检测_分配邻居A第9课.消除检测_分配邻居B第10课.消除检测_分配邻居算法且测试验证第11课.消除检测算法_每个棋子消除检测算法第12课.消除检测算法_整体消除思路第13课.消除检测算法_增加新棋子第14课.完成棋盘的自动检测核心算法第15课.阶段性开发思路总结第16课.ITween

Unity3D_(游戏)开心消消乐

大三狗开学,预计9月17日前完成~ 开心消消乐01 通过Gizmos影藏Scene场景中小摄像机 (点击摄像机进行关闭) 新建一个GameObject->New Sprite,甜甜圈拖动上Sprite上,将游戏分层开发(分为渲染层和模型层) 当不知道甜甜圈尺寸时,可以新建一个3D Object->Cube,Cube默认长宽比例为1m 将甜甜圈长宽缩放比例0.45 将甜甜圈做成预设体 原文地址:https://www.cnblogs.com/1138720556Gary/p/9568817.ht

消消乐 游戏 javascrip版本 Part4-2(半完成品)

摘要:消消乐 游戏 javascrip版本 Part4-2(半完成品) 昨天终于把瘦身完美的完成了~ 但是却意外的发现另一个bug...... 学过软工,就知道"知识非瀑布式". 因为你之后学习的知识可能会影响和改变你以前所学的. 因此当我的瘦身完成后,我很高兴的随便乱点,他还真的让我随便消除! 我才发现,原来我归零的部分放错地方了,应该说少放...... 因为可以点的地方一直不会归零,所以第一次都没问题,第二次以后进入无归零状态, 图案很欢乐的消来消去...... 还好把这个修理完毕

(状压dp)2017 计蒜之道 复赛 F. 腾讯消消乐

腾讯推出了一款益智类游戏--消消乐.游戏一开始,给定一个长度为 nn 的序列,其中第 ii 个数为 A_iA?i??. 游戏的目标是把这些数全都删去,每次删除的操作为:选取一段连续的区间,不妨记为 [L,R][L,R],如果这一段区间内所有数的最大公约数 \geq k≥k(kk 值在游戏的一开始会给定),那么这一段区间就能被直接删去. 注意:一次删除以后,剩下的数会合并成为一个连续区间. 定义 f(i)f(i) 为进行 ii 次操作将整个序列删完的方案数. 你需要实现一个程序,计算 \sum_{

计蒜客 腾讯消消乐

题意 腾讯推出了一款益智类游戏――消消乐.游戏一开始,给定一个长度为n的序列,其中第i个数为A[i], 游戏的目标是把这些数全都删去,每次删除的操作为:选取一段连续的区间,不妨记为[L,R], 如果这一段区间内所有数的最大公约数 >= k(k的值在游戏的一开始会给定),那么这一段区间就能被直接删去. 注意:一次删除以后,剩下的数会合并成为一个连续区间. 定义f(i)为进行i次操作将整个序列删完的方案数. 你需要实现一个程序,计算  数据 1 <= n <= 18, 1 <= A[i

消消乐

问题需求讲解 其实第一次写简单的消消乐的代码,是在N多年前入职后的一次新员工的编码比赛上,因为当时允许C++,让我不得不重新翻了几遍丢到角落好多年的<谭浩强C++>.消消乐的需求非常直观明了,每个消消乐的游戏规则或许都有差异,但是不变的是,都是对相同类型的栅格先进行聚合,再判定是否需要进行消除.假设有如下9宫格: 那么首先就需要找出红线区域内的聚合区域.因为我们专题是染色算法,所以重点讲解如何通过染色算法求得聚合区域. 问题简述为:在nxm的图内,求所有同类型的栅格的聚合区域. 输入:int[

开心消消乐分析

在像Flappy bird这种操作简单的一波游戏来袭之后,虽然这种类型的游戏会流传的很快,但是也会消落的很快,对于爱玩游戏的人来说,很快就会发现这种游戏的无力感,没有什么乐趣,只是为了跟别人一起争个名次.这种类型的游戏,只是带给了人们新鲜感,一旦这种游戏泛滥了,如果没有什么新的创意,人们就开始疲乏了.也会感觉到这种游戏的枯燥无聊. 开心消消乐的出现,带给我新的感受. 1.界面很漂亮,没有了那种极简风格. 2.利用了QQ的关系,加入社交元素,向好友求助等功能使人们把自己的好友拉进来一起玩. 3.游

自己写一个,开心消消乐!

0 写在前面 4月第一周,我并没有被善待~~上个周末才进行了一次冯如杯四审答辩,这周3马上又跟了一次五审答辩… 从上个周五就开始准备四审,答完之后以为可以松口气了,谁料五审来的如此突然.而且更令人烦恼的是,负责我自己那个项目的指导学姐,让我反复修改答辩的PPT和讲稿.说实话,我认为项目的成功,关键还在于完成的质量,和核心科技含量,而不是在展示上徒增一些花里胡哨却无关紧要的噱头.好在北航的老师水平还是高超的,给了我不少宝贵的修改建议,还亲自帮我修改了PPT,这点我是非常感动的.既然我们无论如何努力

一维消消乐(DP)

一维消消乐是一款非常简单的游戏.有n颗珠子排成一排,每一颗珠子有一个价值w(可能是负数). 游戏是这样,你可以选择如若干对相邻的珠子,让他们同时消去.每一对珠子的消失,都会使得总分数加上两颗珠子相乘的分数. 注意,每个珠子只能消一次,并且珠子消去以后,还会占位. 输入格式 输入第一行一个整数n(1≤n≤10000). 接下来一行输入n个整数wi(-1000≤wi≤1000). 输出格式 输出最大的分数. 样例输入 8 -9 -5 -4 -2 4 -5 -4 2 样例输出 73 用dp[i][0]