[转]连连看核心算法详解
http://bbs.9ria.com/viewthread.php?tid=63206
最近做了个连连看游戏,综合网上各种不同的思路,整理出了个人认为大家都比较好理解的一套思路。
游戏规则:很简单,就是点中两个互相匹配并且可以通过不多于两个折点的折线连在一起的方块后,这两个方块就可以消掉。
(说明:下面的行和列按照现实的行和列,并不是按照flash坐标系的坐标,请大家按需转换)
连通算法:
1.直连型
2.一折型
3.两折型
下面我们来分析每一种情况:
直连型
直连性又分为两种情况:横向直连,纵向直连。
首先是横向检测:



private function checkLink(a:Point,b:Point):Boolean { if (a.x == b.x && horizon(a, b)) { return true; } if (a.y == b.y && vertical(a, b)) { return true; } if (oneCorner(a, b)) { return true; } else { return twoCorner(a, b); }}