|
前段时间看到有关连连看算法的介绍很感兴趣,自己研究了下,以TC平台里冷月大师的宠物连连看2.5版为例,用TC做了个出来大家有兴趣的可以研究下,我的这个是辅助.改改代码应该能写出连连看游戏出来.
算法:网上很多介绍的都是什么深度优先搜索和广度优先搜索的算法,因为还没搞懂,所以写不出来.后来看了一篇有关转角的算法,比较好理解.本源码就是按这个这个算法写出来的.可惜那篇贴子我忘了在哪了,今天找了个差不多的说明,看下面:
连连看连接方式的类型:
l
两点直线法
l
三点直角折线法
l
四点方形折线法
l
四点梯形折线法
下面对上面四种类型进行细致划分讲解:
1.
两点直线法的连接类型包括:上,下,左,右
2.
三点直角折线法包括:上左,上右,下左,下右,左上,右上,左下,右下
3.
四点方形折线法包括:上左下,上右下,下左上,下右上,左上右,右上左,左下右,右下左
4.
四点梯形折线法包括:上左上,下左下,上右上,下左下,左上左,右上右,左下左,右下右
算法大概就这样了,不过我写的这种算法有重复搜索的部分,现在还想不出优化的方法.本源码最关键的二部分就是先把连连看游戏里的图片正确的数值化(可以通过找图或找字来数值化,不过找图费时是找字的好几倍,所以我把图片全部化成字了),第二个就是连通算法.
核心的连通算法:(源码里有简化版和原始版,功能一样,但简化版可能没有原始版那样好理解)
功能 逻辑型 连接(整型 x,整型 y,整型 角,字符型 方向)//简化版
整型 i
如果(角>0)
i=1
如果结束
如果(方向=="四方"||方向=="上下"&&角<3)
遍历(整型 上=y-1;上>-1+i;上--)//向上
选择(连连看辅助.碰图(x,上))
条件 1:
跳出
条件 2:
返回 真
选择结束
如果(连连看辅助.连接(x,上,角+1,"左右"))
返回 真
如果结束
遍历结束
遍历(整型 下=y+1;下<12-i;下++)//向下
选择(连连看辅助.碰图(x,下))
条件 1:
跳出
条件 2:
返回 真
选择结束
如果(连连看辅助.连接(x,下,角+1,"左右"))
返回 真
如果结束
遍历结束
如果结束
如果(方向=="四方"||方向=="左右"&&角<3)
遍历(整型 左=x-1;左>-1+i;左--)//向左
选择(连连看辅助.碰图(左,y))
条件 1:
跳出
条件 2:
返回 真
选择结束
如果(连连看辅助.连接(左,y,角+1,"上下"))
返回 真
如果结束
遍历结束
遍历(整型 右=x+1;右<16-i;右++)//向右
选择(连连看辅助.碰图(右,y))
条件 1:
跳出
条件 2:
返回 真
选择结束
如果(连连看辅助.连接(右,y,角+1,"上下"))
返回 真
如果结束
遍历结束
如果结束
返回 假
功能结束
国际惯例:源码回复可下.
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|