cocos2d-x 3.6 连连看算法

前端之家收集整理的这篇文章主要介绍了cocos2d-x 3.6 连连看算法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

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

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

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

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

图一

图二

图三

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

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

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

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

图四

图五

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

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

下一篇来讲具体实现。

猜你在找的Cocos2d-x相关文章