不再依赖A*,利用C++编写全新寻路算法
发布时间:2020-12-13 19:45:05 所属栏目:百科 来源:网络整理
导读:不再依赖A*,利用C++编写全新寻路算法 分类:C/C++ 2013-07-02 19:24 1841人阅读 评论(8) 收藏 举报 C++ 算法 寻路 目录(?) [+] 一,说在前面的话 大概在半年前,看见一到信息竞赛题:在任意方格阵中设置障碍物,确定起始点后,求这两点之间路径。当时觉得蛮
不再依赖A*,利用C++编写全新寻路算法
分类:C/C++
2013-07-02 19:24
1841人阅读
评论(8)
收藏
举报
C++
算法
寻路
目录(?)[+] 一,说在前面的话大概在半年前,看见一到信息竞赛题:在任意方格阵中设置障碍物,确定起始点后,求这两点之间路径。当时觉得蛮有意思的,但是没有时间去做,今天花了两个小时来实现它。据说有一个更高级的寻路算法叫做a*,那我就把我的算法叫做W*。 这个算法主要用于解迷宫和实现战棋游戏(SLG)的寻路。首先讲一讲我的算法的思路: 我们先确定起始点,然后从起点出发,按一定顺序判断这个位置上下左右是否有可走的位置,如果发现有可走的位置,则递归进入该位置的判断。在递归的同时记录所走的路线。当发现某个位置无路可走,则删除路线的最后一个位置并返回上级位置进行判断。如此反复尝试最终找到路线。 说了这么多,就来讲解一下代码吧。
二,讲解部分包含头文件(全部都是stl中的):
为几个冗长的类型重命名,用来使后来的代码更明了。 copy
copy
然后到了核心类类型CLabyrinthAI copy
如果上述过程把你搅晕了,那就用图来为你解答吧。 然后来到main函数 copy
以上代码同样加了注释,相信了解C++的同学都能看懂。 运行截图:
(Dos的,有点丑……) 三,Javascript版顺便我也把C++版的移植到了Javascript上,代码如下:
[javascript]
copy
虽然这套算法是研究出来了,但是还不能判断是否为最近路线,因此有待更新。不过以现在的算法,开发一个SLG应该不是问题了。 ※感谢我的哥哥与我一起讨论其中的原理。 源代码下载: http://files.cnblogs.com/yorhom/findRoute.rar (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |