码迷,mamicode.com
首页 > 编程语言 > 详细

cocos2d-x 3.6 连连看算法

时间:2015-06-18 17:16:46      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:cocos2d-x   游戏开发   连连看算法   游戏场景   

我的原创博客: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 3.6 连连看算法

标签:cocos2d-x   游戏开发   连连看算法   游戏场景   

原文地址:http://blog.csdn.net/dawn_moon/article/details/46549703

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!