cocos2d-x游戏实例(6)-A星算法(2)

原创 2012年02月27日 19:09:57

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man

上一篇中我们研究了A星算法的基本概念,本篇介绍A星算法的具体实现。

首先函数从findpath函数开始,初始化的内容如下


首先是把当前位置和目标位置赋给我们这个类的成员变量,然后把我们的地图变量传入到成员变量map中,然后分别初始化openclosepath列表,其中pathclose列表先为空,open列表中为了进行堆排序时方便(堆排序时从索引0开始时,索引乘二还是0,所以这样会造成不便)。然后把起点加入到open列表中,这里涉及到geth的估计函数,因为到起点的代价是0,从起点到终点的估计函数geth如下:


我们选取的这个估计函数比较简单,就是分别算从本点到目标点的横纵索引值,并把它乘以10,我们把临近格之间的代价定为10,那么对角线的代价就是1410*根号2)。继续回到findpath中,我们开始真正的搜索了


我们遍历open列表中的元素,首先通过fromopentoclose()函数把open列表中的第一个元素(第0个元素无效,前文已经说过了)删除并把他加入到close列表中。fromopentoclose函数如下


首先从open中把第一个元素并把它加入到close函数中,然后在removefromopen函数中把open列表中的第一个函数换成open中的最后一个函数,底下进行一下堆排序,这里简单说一下堆排序,就是把整个的数组看成是一个树形结构,然后保证父节点比子节点的f值小即可,这样一来,第一个元素就是最好的

如有错误之处,希望大家多多指正

下一篇继续A星算法游戏实例


版权声明:本文为博主原创文章,未经博主允许不得转载。

cocos2d-x游戏实例(9)-A星算法(5)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 上一篇我们已经完成了A星算法,那么如何使...

cocos2d-x游戏实例(7)-A星算法(3)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 继续上一篇的内容,我们再看我们上一篇进行...

cocos2d-x游戏实例(8)-A星算法(4)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 继续A星算法,我们在经历了地图的检测,并...

cocos2d-x游戏实例(5)-A星算法(1)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 继续上一篇地图上的处理,不过和本篇相比,...
  • bill_man
  • bill_man
  • 2012年02月26日 22:14
  • 11929

cocos2d-x中A星算法的实现和实际使用

A星算法经常会用在寻径算法中,是一种典型的启发式搜索算法,属于人工智能算法的一种,...

Cocos2d-x 3.1.1 学习日志16--A星算法(A*搜寻算法)的学习

A *搜寻算法俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。     首先:1、在Map地图中任取2个点...

cocos2d-x游戏实例(19)-纵版射击游戏(6)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 上一篇的实例中,纵版射击游戏中加入了敌人...

cocos2d-x游戏实例(28)-简易动作游戏(6)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man本篇继续简易动作游戏实例,本篇加入简单血量条ui...
  • bill_man
  • bill_man
  • 2012年04月22日 11:49
  • 14248
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2d-x游戏实例(6)-A星算法(2)
举报原因:
原因补充:

(最多只允许输入30个字)