用于寻路清除的Javascript循环

时间:2015-07-21 08:29:20

标签: javascript loops path-finding a-star

我试图在路径寻找脚本(javascript)上添加间隙计算。

我真的不知道如何以编程方式实现这一目标......

我使用的是AStar脚本,所以我有一个带有这样的图块的双维数组:

[
    [0,0,0,0,0,1],
    [0,1,0,1,1,1],
    [0,1,1,1,0,1],
    [1,1,1,0,0,1],
    [1,1,0,1,0,1],
    [1,0,0,0,0,1]
]

这里,0表示"墙",1表示"路径"。 1是默认间隙。

如何循环每个图块(从左上角到右下角计算)以获得最大间隙,如此方案中所示:

https://aigamedev.com/open/tutorials/clearance-based-pathfinding/#TheTrueClearanceMetric

唯一的问题是"循环格式",我需要测试当前磁贴是0还是1,以存储最大间隙

非常感谢!

修改

对于那些无法看到网站的人,我的意思是一些方案:

计算清除的步骤

Steps to calcul clearance

完整结果的示例

Example of a full result

1 个答案:

答案 0 :(得分:0)

您仍然需要外部嵌套for循环来遍历每个正方形,如jsfiddle.net/uctsf755代码,但在每个正方形内,您要进行宽度优先搜索以找到最近的墙。一旦你找到一个,你可以实际更新你沿途看到的所有方块,因为与这些方块最近的墙将是同一面墙。记住你去过哪些,所以你不必再对它们进行bfs。

总复杂度将在O(n ^ 2)左右,因为您应该只访问每个方块一次。

祝你好运!