【问题标题】:path finding in a simple grid, no obstacles在简单的网格中寻找路径,没有障碍物
【发布时间】:2011-06-20 19:36:43
【问题描述】:

我想要在 As3 中找到一个简单网格中的最短路径的简单算法,我需要完整的路径,而不是唯一的两个点或长度。

在此处查看图片:http://screencast.com/t/GmR5YaO4L

所以我需要从 A 到 B 的路径中的网格的所有平方数。

【问题讨论】:

    标签: algorithm actionscript shortest-path


    【解决方案1】:

    虽然 A* 在没有障碍物的情况下有点矫枉过正,但你不妨使用它,因为我在 AS3 中为它编写了一个库:http://www.newarteest.com/flash/astar.html


    编辑:如果您没有 100% 确定寻路永远不会遇到障碍,那么我仍然推荐 A*,因为这可以为您提供最大的灵活性,但在您的特定情况下,很容易找到没有障碍的路径,因为您只水平移动一次,然后垂直(或相反)移动一次,而不是对角线。

    首先减去位置的 x 和 y 分量以确定哪条路更长,然后开始朝那个方向移动。然后当对象在该轴上的相同位置时,切换到另一个方向移动。

    根据您的需要,您可以轻松构建一个循环或递归函数,在遍历之前找到整个路径,但在不提前知道整个路径的情况下将对象沿正确方向移动可能更简单。在找到路径时,无论如何您都需要遍历所有节点,这样您就可以避免必须遍历节点两次。

    【讨论】:

    • 我正在浏览它,我是 as3 的新手。我不明白第 22 行 - public static function go(xIni, yIni, xFin, yFin, lvlData):Array { - :Array 部分是做什么的?不是函数,不是数组吗?谢谢
    • 这意味着它返回一个数组作为该函数的结果。具体来说,它是路径中的节点数组;您使用该数组的方式(在示例代码中演示)是遍历数组并按顺序移动到存储的位置。
    • 太棒了,您的 A* 库运行良好 :) 谢谢,正是我想要的。
    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 2015-05-28
    • 2011-08-25
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    相关资源
    最近更新 更多