cocos2d-x 3.6 连连看算法

cocos2d-x 3.6 连连看算法,第1张

概述我的原创博客:http://blog.csdn.net/dawn_moon 好了,在开始讲连连看游戏场景之前先来讲讲连连看算法。 连连看算法网上有很多,算法控首先想到的就是广度优先搜索,求出路径,然后求最小拐弯路径。 这个算法可以,但是对没有学过算法的同学可能有点困难,我这里也不讲。 我百度到一个比较通俗简便的算法,拿来用一下 在开始讲算法之前,讲一下地图布局,假设 4*4 的棋盘。 初始化地图,

我的原创博客:http://blog.csdn.net/dawn_moon

好了,在开始讲连连看游戏场景之前先来讲讲连连看算法。

连连看算法网上有很多,算法控首先想到的就是广度优先搜索,求出路径,然后求最小拐弯路径。

这个算法可以,但是对没有学过算法的同学可能有点困难,我这里也不讲。

我百度到一个比较通俗简便的算法,拿来用一下

在开始讲算法之前,讲一下地图布局,假设 4*4 的棋盘。

@H_301_15@ 初始化地图,将要加载的图片在地图上绘制出来,每一种一次性绘制两次,确保偶数个。如图一 遍历棋盘,随机打乱布局,这样就形成不规整的布局。如图二 棋盘最外边是不绘制图片的,但是也是一格地图,用来画最外边的连线。如图三

图一

图二

图三

很容易想到,用一个二维数组来记录所有的位置,0表示空,非0表示有图标填充。那么初始化数组的时候,最外一圈是0,其余位置用图片序号就好了。

现在说说算法:
两个图标可以连接的条件是:
1. 图标相同。
2. 两个图标之间有一条通路相连,即路线上没有其他图标阻碍。
3. 这条路线不能有两个以上的拐角。

满足上面三个条件就是连通的,有三种情况:
1. 直线连,没有拐点。简单,两个图标在一条直线上,中间没有其他图标
2. 一折型,一个拐点。以两个选中的图标为对角顶点画矩形,其余两个顶点能够与两个选中的图标形成直线即可。连如图四
3. 二折型,两个拐点。横向和纵向扫描。如图五

@H_301_15@ 横向扫描。选中的两个点横向扩展,如果没有遇到其他图标,一直扩展,直到遇到其他图标或者到达地图边缘。如果扩展后的路径,存在两个点,能与选中的两点形成直线连即可。 纵向扫描原理同横向扫描。

图四

图五

判断棋盘是否还有解和自动消除算发都是用这个来解。

这个算法是我在网上找的一个demo,安卓版java写的。然后我用cocos2d-x重写了一下,感觉还行。调试了半天,终于好了。

下一篇来讲具体实现。

总结

以上是内存溢出为你收集整理的cocos2d-x 3.6 连连看算法全部内容,希望文章能够帮你解决cocos2d-x 3.6 连连看算法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1061642.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存