三消游戏可以说是游戏界的常青树,也是一个玩法深受大家喜爱并且经久不衰的游戏种类,今天主要在这为大家分析一下三消游戏的核心算法的实现。
我自己也开发过几款三消类游戏,正所谓万变不离其宗,在我看来真正影响三消算法效率已经真正需要实现的核心就是--递归。
这里给大家提供一个递归的简单介绍的链接,我在这里不多赘述http://bbs.csdn.net/topics/340030147
加单来说就是一个方法在方法体中又调用了了自己就可以简单理解为递归,有人会问这不就造成死循环了么?所以大家要很明确的记住一点那就是,递归一定要退出条件,也就是说要有return语句。
我们传统意义上的三消就是在你对其中一个元素做了操作之后,生成的新的地图是否满足消除条件,以开心消消乐为例,就是说当两个元素的位置互换后是否满足了消除条件,如果是就进行消除,否则就回到原来的位置。
大家应该看到了我在上面提到了地图的感念,想想一下把你的屏幕想象成棋盘,在上面可以消除的元素想象成棋子,是不是具体了很多?那么现在棋盘上每个位置放置的元素是不是可以用一个最简单的二维数组来存放了呢?
三消算法的核心就是如何判断棋盘更新之后是否有满足三消的情况出现。
下面给大家写一段伪代码提供一下思路
eliminate(元素 当前){