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

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

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

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

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

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

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

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

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

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

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

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 继续上一篇地图上的处理,不过和本篇相比,我们之 ...

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

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

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

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

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

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

  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. ubuntu 使用阿里云 apt 源
  2. Shoot the Bullet(ZOJ3229)(有源汇上下界最大流)
  3. 宏基因组扩增子1图表解读-理解文章思路,零基础测序分析图表解读大全(箱线,散点,热,曼哈顿,火山,韦恩,三元,网络),老板再也不愁我的文献阅读了!
  4. javascript:重新加载js文件
  5. CodeForces - 976F Minimal k-covering
  6. .net core 2.0学习笔记(二):Hello World amp;amp; 进阶
  7. MATLAB安装第三方工具箱
  8. javaScript DOM编程常用的方法与属性
  9. CSS+DIV-设置表格与表单
  10. [转帖]FPGA--Vivado
  11. 15.2. important
  12. NodeJs同步、异步加载
  13. 通过EasyRecovery恢复删除的音频
  14. Handler通信 源码分析和手写Handler框架
  15. 梦龙即时通讯软件测试初学者,梦龙即时通讯软件
  16. nginx源码安装教程
  17. 哈工大深圳计算机自动化专业,专业介绍———自动化专业知多少
  18. diskgenius创建efi分区_找不到引导分区 启动分区不存在 怎么创建efi系统分区
  19. 绿联 蓝牙适配器 linux,绿联USB
  20. [现代控制理论]10_可观测性与分离原理_观测器与控制器

热门文章

  1. (常用API)正则表达式切割练习
  2. 常用的函数式接口_Consumer接口练习_字符串拼接输出
  3. 事件绑定中的this问题
  4. SpringBoot_配置-@PropertySource、@ImportResource、@Bean
  5. java的自动装配是什么意思_java – 什么时候在Spring中使用自动装配
  6. 计算机游戏和传统游戏的区别是什么,电竞显示器与普通显示器有什么区别-电脑自学网...
  7. php use include区别,php use和include区别总结
  8. python iloc函数_python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
  9. 计算机声音处理说课稿,《声音的产生与传播》说课稿
  10. 【SpringMVC】SpringMVC基础-SpringMVC项目快速搭建、日志框架为logback