cocos2d-x游戏实例(6)-A星算法(2)
小满(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)相关推荐
- cocos2d-x游戏实例(5)-A星算法(1)
小满(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游戏实例(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 继续上一篇的内容,我们再看我们上一篇进行的部分 ...
- Java游戏服务器开发之A星算法
Java游戏服务器开发之A星算法 学习这个主要是用于寻路算法. 参考资料主要是siki学院的视频,A计划--人工智能--A星算法. 网址http://www.sikiedu.com/cou ...
- iOS cocos2d 2游戏开发实战(第3版)---你的第一个游戏!
2019独角兽企业重金招聘Python工程师标准>>> 随着苹果公司不断地创新与发展,新的iPhone 5.iPad 4以及iPad mini产品相继问世,包括iOS与Xcode在内 ...
- cocos2d-x游戏实例(13)-简易摇杆控制主角
小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 上两篇文章都介绍的触屏地操作,其实进入智能机时 ...
- cocos2d-x游戏实例(11)-触屏主角移动轨迹
小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 最近在玩间谍鼠这个游戏,其中有一个触屏操作主角 ...
- 【A星算法的优化方案】
当地图很大的时候,或者使用A星算法的寻路频率很高的时候,普通的A星算法就会消耗大量的CPU性能急剧下降,普通的A星性能还是不过关.接下来我们讲讲A星寻路在遇到性能瓶颈时的优化方案. 一.长距离导航 当 ...
最新文章
- ubuntu 使用阿里云 apt 源
- Shoot the Bullet(ZOJ3229)(有源汇上下界最大流)
- 宏基因组扩增子1图表解读-理解文章思路,零基础测序分析图表解读大全(箱线,散点,热,曼哈顿,火山,韦恩,三元,网络),老板再也不愁我的文献阅读了!
- javascript:重新加载js文件
- CodeForces - 976F Minimal k-covering
- .net core 2.0学习笔记(二):Hello World amp;amp; 进阶
- MATLAB安装第三方工具箱
- javaScript DOM编程常用的方法与属性
- CSS+DIV-设置表格与表单
- [转帖]FPGA--Vivado
- 15.2. important
- NodeJs同步、异步加载
- 通过EasyRecovery恢复删除的音频
- Handler通信 源码分析和手写Handler框架
- 梦龙即时通讯软件测试初学者,梦龙即时通讯软件
- nginx源码安装教程
- 哈工大深圳计算机自动化专业,专业介绍———自动化专业知多少
- diskgenius创建efi分区_找不到引导分区 启动分区不存在 怎么创建efi系统分区
- 绿联 蓝牙适配器 linux,绿联USB
- [现代控制理论]10_可观测性与分离原理_观测器与控制器
热门文章
- (常用API)正则表达式切割练习
- 常用的函数式接口_Consumer接口练习_字符串拼接输出
- 事件绑定中的this问题
- SpringBoot_配置-@PropertySource、@ImportResource、@Bean
- java的自动装配是什么意思_java – 什么时候在Spring中使用自动装配
- 计算机游戏和传统游戏的区别是什么,电竞显示器与普通显示器有什么区别-电脑自学网...
- php use include区别,php use和include区别总结
- python iloc函数_python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
- 计算机声音处理说课稿,《声音的产生与传播》说课稿
- 【SpringMVC】SpringMVC基础-SpringMVC项目快速搭建、日志框架为logback