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重写了一下,感觉还行。调试了半天,终于好了。

下一篇来讲具体实现。

时间: 2024-10-12 02:45:25

cocos2d-x 3.6 连连看算法的相关文章

连连看小游戏前端实现

上周五突然接到一个重磅消息:公司决定开发首款手机小游戏,运行平台是淘宝app上的微淘平台.这个微淘平台从技术上讲是一个能运行html5的平台,跟微信比较类似.接到这样的任务,我自然很高兴呀,因为这也是我的第一款手机游戏了.经过一个周末的奋战,算是初步把这个游戏跑起来了.在写之前我也是查看了不少算法和实际线上代码,因为这都是个被写烂了的游戏了,那么你只要百度一下'连连看算法'的话你基本都不用自己写了,算法也有好几种,一开始我也比较迷惑,不知道从何下手,经过几番比较,我还是选择了自己的一种简单算法,

MVC 编程笔记2

转载自http://blog.csdn.net/kenkao/article/details/50291991 作者:吴秦 出处:http://www.cnblogs.com/skynet/ 本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). 参考资料 [1]     PureMVC官方网站:www.puremvc.org [2]     Wikipedia:http://zh.wikipedia.org/zh-cn/MVC [3]

转: iOS面试题

忘记了出处,侵删!!! #阿里一面 1.Android的activity 2.Category支持添加属性与成员变量吗 3.是否了解设计模式, 用过哪些 4.iOS7之后, 蓝牙的围栏功能 5.MVC是否了解?介绍下使用情况. 6.MVC里面, View怎么通知到Model 7.了解delegate吗?并介绍 8.说说Cell重用原理 9.异步下载如何实现 10.做过最大的项目是什么?主要难点在哪里 11.如果现在要实现一个下载功能, 你要如何设计.说说每个类具体做什么 12.学过哪些语言 13

实验三 敏捷开发与XP实践 实验报告

课程:Java程序设计实验   班级:1353  姓名:余佳源  学号:20135321 成绩:                           指导教师:娄嘉鹏      实验日期:2015.6.4 实验密级:无            预习程度:                   实验时间:15:30~18:00 仪器组次:  21                    必修/选修: 选修                  实验序号:3 实验名称:敏捷开发与XP实践 实验内容 1. XP

cocos2d-x3.6 连连看连通算法

我的博客:http://blog.csdn.net/dawn_moon 上一章讲了连连看游戏的主要逻辑,连通算法并有讲如何实现. 这个连连看没有使用广度优先搜索算法,采用的是一种比较有技巧的算法,参见前面章节. 大致分为几个部分: 直连通 两个点X轴扩展后可以直连通 两个点Y轴扩展后可以直连通 看下连接函数 bool GameScene::link(cocos2d::Vec2 v1, cocos2d::Vec2 v2) { if (v1.equals(v2)) { return false; }

关于《连连看》的算法研究和演示Demo

连连看曾经是一款非常受欢迎的游戏,同时它也是一款比较古老的游戏.看到这里你千万不要认为本篇文章打算讨论<连连看>的历史以及它取得的丰功伟绩.恰恰相反,在这篇文章中我们打算讨论该游戏背后的实现思想,包括它定义的游戏规则,以及游戏的实现算法.作为应用,我们还将利用Java代码实现一个通用的<连连看>算法,并使用Java Swing框架创建一个演示实例. 1<连连看>的游戏规则是如何定义的? 连连看的游戏界面和游戏规则都非常简单.游戏界面可以简单看作一个具有M×N个单元格的棋

连连看核心算法

在学习ios开发的过程中,用一般的方式用oc写了一个练练看的小游戏,没有用到cocos2d编程.自己做的思路如下: 程序的关键在于判断用户连续点击的两个图案能否消除.两个图片可以消除的条件有两个: (1) 图案相同 (2) 图案间连线的转角数不得超过2 所以连通的算法分为: (1) 直连型 (2) 一个拐角连通 (3) 两个拐角连通 将图片所在的view看为一个棋盘,然后根据棋盘的行列进行相关的判断. 首先探讨下直连型:分为水平直连(横坐标相等)和竖直直连(纵坐标相等),且两者之间没有其他的图案

如何在Cocos2D游戏中实现A*寻路算法(一)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 该篇博客由iOS课程团队的Johann Fradj发布,他现在是一个全职开发iOS的开发者.他是Hot Apps Factory(其是App Cooker的创造者)的共同创建

从迷宫问题、连连看、红与黑说回溯算法遍历解空间

今天上午完成了“迷宫”问题,也思考了“2.5基本算法之搜索”的另外几个问题:小游戏(就一连连看),马走日,红与黑等.我所关注的这几个问题都可以用回溯算法来进行解决.回溯算法简单说就是当运行到叶子节点证明不是解时回到上一层节点继续遍历,如此循环直到找到一个解:如果需要全部解,可以继续遍历,如果不需要可以直接退出.很明显,回溯算法是一种深度优先的搜索算法,非常适合在解空间中找到一个解的问题. 一.迷宫问题: 1792:迷宫 总时间限制: 3000ms 内存限制: 65536kB 描述 一天Exten