A*寻路演示程序,希望高手来进一步优化

sftk 2005-07-25 03:31:21
本程序是在 空明流转 代码(http://blog.gameres.com/thread.asp?BlogID=170&threadid=11463)基础上修改得来,
参考了 林伟 的思想(http://blog.csdn.net/skywind/archive/2002/11/14/6076.aspx)
主要改进处:
1,所有节点在载入地图时构建,寻路时只传地址,提高了效率。
2,取消了closed表,代用标志位表示,open表用STL中priority_queue构造。
3,可以进行多次寻路而不必修改原来走过的节点。
4,只需修改地图路径便可以处理不同的字符地图(障碍物和路径字符随意设定)

map1.dat,map2.dat为地图文件,该路径可由AStarDemo.cpp设置。
第一行代表地图的宽和高
第二行代表起点坐标
第三行代表终点坐标
第四行代表表示障碍物和表示路径的字符
其余为地图
地图坐标系自左上角为(0,0)点,右为正X,下为正Y

我用自己写的测试类(o_time.h)测量寻路时间(精度很高),演示程序中分别测量了一次寻路和1000次寻路的时间,自我感觉还不错(虽然赶不上林伟的程序),若你能进一步优化(程序结构,寻路速度),请一起分享。

源代码下载:http://bbs.gameres.com/showthread.asp?threadid=33460
...全文
144 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
netbian 2005-08-04
  • 打赏
  • 举报
回复
看看
俺现在学游戏设计看的都是外文书 nnd中文出来了技术就落后了
郁闷 英语水平太差 要不就幸福了 看来学好英语是绝对正确的
sftk 2005-08-03
  • 打赏
  • 举报
回复
蛮有造诣? 我刚接触AI,属于菜鸟级-_-!
我玩的游戏很少。。。
那个估计函数是从 林伟 文章上看到的,应该属于经验函数。

PS:AI是个好东东,它必将推动新一代游戏的发展(要是NPC能和玩家对话,交流感情,那该多好)
tslkfyh 2005-08-03
  • 打赏
  • 举报
回复
人工智能确实是很吸引人,但关于这方面的资料太少了,学起来很累
tslkfyh 2005-08-02
  • 打赏
  • 举报
回复
楼主对人工智能看来蛮有造诣的啊,希望以后能多多指教
能否请教一下:
if(dx>dy)
h=10*dx+6*dy;
else
h=6*dx+10*dy;

10和6是怎么出来的?
tslkfyh 2005-08-02
  • 打赏
  • 举报
回复
这个演示以前看过,不知你有没有看过金点圣2中的寻路算法,可能其中有些值得借签一下
sftk 2005-08-01
  • 打赏
  • 举报
回复
to tslkfyh(TSL):
对,估计函数的选择对寻路速度的影响很大,可以看下这个
http://blog.gameres.com/thread.asp?BlogID=1450&threadid=33875

我的程序的确不能找到最近位置,我想可以这么做:
每次扩展节点时保存最好的节点,当open表为空时返回该节点。

tslkfyh 2005-08-01
  • 打赏
  • 举报
回复
A*算法本身是一个很简单的算法,寻路的优解关键是估价函数,如果你的估价函数是最优的那么你寻路的解也就是最优的
tslkfyh 2005-08-01
  • 打赏
  • 举报
回复
当E点击的是一个闭合路径时也就是E被障碍包围时你这程序不能找到最近的位置
sftk 2005-07-31
  • 打赏
  • 举报
回复
呵呵,怎么都是 来顶下,程序并没多么复杂,就没人优化吗?
MagicCarmack 2005-07-26
  • 打赏
  • 举报
回复
偶还很弱,只能帮你顶!
sftk 2005-07-26
  • 打赏
  • 举报
回复
人真是少,看来100分浪费了
火云洞红孩儿 2005-07-26
  • 打赏
  • 举报
回复
呵呵.接分.看看.
sftk 2005-07-26
  • 打赏
  • 举报
回复
呵呵,的确还是有人在看。现在想学AI,一条既艰辛又让人着迷的道路。
sleeepboy 2005-07-26
  • 打赏
  • 举报
回复
楼主别急 俺们慢慢看 ^_^
孙亖 2005-07-26
  • 打赏
  • 举报
回复
看看
wdswu 2005-07-26
  • 打赏
  • 举报
回复
呵呵 我在群里下载了你的,原来我们一个学校的哇
sftk 2005-07-25
  • 打赏
  • 举报
回复
忘了说了,程序是用VC7.1写的,用VC6编译的话需要修改些地方,压缩包里有个exe文件

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧