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

继续上一篇地图上的处理,不过和本篇相比,我们之前的四篇,可都算是“热身准备”了,因为我们要研究一个算法并把它加入到我们的游戏中,这种算法在rpg,以及现在比较火爆的“乱斗”类(参考战斗之心battle heart)中都是比较多地被采用了。

下面我们就介绍一下A星算法,他就是一种启发性的算法,根据现在到达这个位置的步数及之后的“估计步数”,即f=g+h,f是整个从起点到终点的代价,g是从起点到我们目前位置的步数,h是从目前位置到终点的估计值,注意这里是估计值,所以我们得到解并不一定是最好的解,具体解“好”到什么程度呢?就是要根据h的估计的好坏,因此只是一个较优解。(以上的部分只能说是我对A星算法较为浅的理解,只能算是初探吧,有不足之处欢迎指正,这里只是为了更好的解释我的程序。)

我的程序的流程可以分为如下几步,有一个open表,有一个close表,open表首先存储我们的起点,然后由此出发,首先把起点放入close列表,并检测这点周围点的f值(g+h,h我们通过本点到终点的横纵索引差估计而来),把剩下的点放入open列表中,并根据f值进行堆排序,然后把f值最小的点放入close列表中,然后继续上面的循环,继续处理,直到找到终点为止。当然我们还要根据我们的游戏做一些处理即是处理地图中的碰撞等,我们要让我们的人物绕过碰撞。

首先看一下我们的程序结构

首先我们的MapScene得到了保留,然后Astar是A星算法的核心算法类,Astaritem是A星列表中的列表项,首先看Astaritem。

我们为了让此类更好的和cocos2d-x结合,也使用同样的内存管理机制,我们让此类继承与CCNode类,而其中有六个变量,分别是行列,g函数,h函数,f函数,和在堆排序中的父节点。我们采取set/get的方法来管理这六个值

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

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

转载于:https://www.cnblogs.com/manshuoquan/archive/2012/02/26/5347196.html

cocos2d-x游戏实例(5)-A星算法(1)相关推荐

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

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

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

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

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

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

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

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 上一篇中我们研究了A星算法的基本概念,本篇介绍 ...

  5. Java游戏服务器开发之A星算法

    Java游戏服务器开发之A星算法    学习这个主要是用于寻路算法.    参考资料主要是siki学院的视频,A计划--人工智能--A星算法. 网址http://www.sikiedu.com/cou ...

  6. iOS cocos2d 2游戏开发实战(第3版)---你的第一个游戏!

    2019独角兽企业重金招聘Python工程师标准>>> 随着苹果公司不断地创新与发展,新的iPhone 5.iPad 4以及iPad mini产品相继问世,包括iOS与Xcode在内 ...

  7. cocos2d-x游戏实例(13)-简易摇杆控制主角

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 上两篇文章都介绍的触屏地操作,其实进入智能机时 ...

  8. cocos2d-x游戏实例(11)-触屏主角移动轨迹

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 最近在玩间谍鼠这个游戏,其中有一个触屏操作主角 ...

  9. 【A星算法的优化方案】

    当地图很大的时候,或者使用A星算法的寻路频率很高的时候,普通的A星算法就会消耗大量的CPU性能急剧下降,普通的A星性能还是不过关.接下来我们讲讲A星寻路在遇到性能瓶颈时的优化方案. 一.长距离导航 当 ...

最新文章

  1. css less 不要作用到子对象_CSS-预处理语言Sass、Less简述
  2. asp.net操作IIS主机头的问题总结
  3. 关于Vue页面JS+JQ无法调用页面方法与data
  4. iPhone应用可用性的试探性分析
  5. Atitit common codec algo 常见编码算法 目录 1. 分类 1 2. BinaryEncoders 2 2.1. Base64 bin2hex etc 2 2.2. bin2h
  6. WEB前端设计师常用工具集锦
  7. 软件测试面试题整理(四)之接口测试篇
  8. 【摄影与图像】444,422,420,10bit,8bit,RGB,YCrCb,场序,h264编码,封装,码率,PR常用配置
  9. IDEA代码文件导航-Navigate使用技巧
  10. linux sticky权限,Linux基础入门篇之文件高级权限suid,sgid,sticky
  11. 华硕电脑锁定计算机,华硕笔记本电脑的BIOS怎么设置
  12. SX1278设计(硬件部分)
  13. 天翼云,不要来,千万不要来!开始统计工时,安装监控软件,减少福利!
  14. 4、python开源——scrapy爬虫天气预报
  15. Latex 图片/表格位置不正确
  16. Modified Polygon (Allow modified: No), (Allow shelved: No)/修改的多边形(允许修改:否)(允许搁置:否)
  17. myeclispe 启动报错Location Type Faceted project metadata file /farming/.settings/org.eclips
  18. idea连接登入GitHub账号提示:access token should have `repo` and `gist` scope
  19. 【服务器】什么是服务器虚拟化
  20. 【新手提问导读】提问的艺术_提问的艺术

热门文章

  1. [收集] C++ memset ,memcpy 和strcpy 的区别
  2. 在Itanium2、Intel Fortran Compiler上安装VASP4.6
  3. mongodb windows安装
  4. 入门Leaflet之小Demo
  5. 转:Siri之父:语音交互或将主导未来十年发展
  6. kettle中通过 时间戳(timestamp)方式 来实现数据库的增量同步操作(一)
  7. 分布式事务 dtc 的使用
  8. c语言中自守数函数,【C语言训练】自守数问题 (C语言代码)
  9. fpga电平约束有什么作用_FPGA从串模式
  10. ZOJ3261并查集逆向处理