求教 消消乐 斜落算法,如何保证移动顺序!!!

斜着落下,我实现了,但是发现移动顺序的时间不好控制,请教下大神,这个算法应该怎么做。
我先说一下我的实现。

我分了 3 层逻辑。
每一层又包括 3个逻辑

最底层是判断当前格子 能否 左/下/右移动 三个逻辑,如果能,获取移动路径
第二层是判断 移动路径数组 是否记录的移动,如果有 那么 这个格子 左/下/右 把当前位置,和最后移动到的位置坐标交换
第一层逻辑 是 扫描所有格子 格子是否能选择 ,能移动 ,如果都能,那么进入第二层逻辑,等待移动路径返回 ,如果有 那么移动本次循环返回的所有路径。结束判断 如果产生了移动,那么从新进入一次递归,直到全部无法移动为止

我用这个思路,能够完成所有格子移动到正确的地方 。但是格子移动的顺序时间不正常。求教各位有没有更好的算法,或者可以让时间正常的方式。

最开始的算法,跟这个完全不一样,最开始是 判断格子是否需要补充,然后自动往上找,3层递归,全部包在一个函数里面,然后发现扩展性很差,也可以实现格子到正确位置,然而又是时间顺序不对,扩展性也很差,又换了现在的,扩展性解决了,但是移动时间还是不对。我整了2个多星期了,卡在这个位置,求大大帮忙,第一次做完整项目,这个项目对我很重要,希望有能力的大神,帮一下我,我尽到能力最大限度了。百度了其他人讲的算法,都是垂直落下的,没有斜着的。

移动和效果(就是你说的那些时间什么的)不应该混在一起。
在用户操作完后,应该在逻辑上对下落进行遍历。
从下往上,落下一个,重新遍历一次。
最后获得一个移动的列表。
移动过程中,也许会触发一些道具啥的。
通通在一个移动步骤列表里。
这个时候是用户无法操作的(如果要用户操作,可以随时更新移动步骤列表)
完成,逻辑计算后。
根据移动步骤列表,一步步播放下落动画和特效等。
完成了。

你指的意思是,所有的格子对象,都拥有一个属于自己的移动队列 , 移动逻辑检测完成后,检测自己的移动队列,如果拥有序列 就自己移动自己的? 如果没有,就不动,是这个意思么??

不是每一个格子,
是整个矩阵,每次变化一步,记录下来。
形成一个变化队列。
计算到无变化后,再去将这个队列里的动作播放出来。
你应该有一个算逻辑的类
一个执行动画效果的类。
如果混在一起 必然写不好

我大概懂了 ,是不是动画效果类只装:精灵, 逻辑类装:判断条件,能不能移动,能部能选择,位置信息