计算网格上的最短路径

时间:2016-03-22 20:30:45

标签: java

我有两点意见。一个是玩家的位置和敌人的另一个位置。

我想知道如何计算玩家到达敌人的最短距离。玩家不能沿对角线移动,只能向上,向下,向左和向右移动。

这是一个网格。所以左上角是0,0等等。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以在图表上应用Dijkstra algorithm,其中每个节点代表网格的一个单元格,每个边缘的成本为1(这样可以让您先使用呼吸搜索,但更常用,拥有完整的Dijkstra算法可以帮助你。)

答案 1 :(得分:0)

很难知道最短路径是什么,因为我们不确切地知道你在说什么。如果它只是一个标准网格,玩家和敌人之间没有任何东西,那么最短的路径是微不足道的。任何下降并越过正确单位而不返回的路径是最短路径。沿着整个单元然后向下到达整个单元的长度就像下降然后向侧面然后向下然后到侧面单元的坐标对齐。

如果你有障碍,那么Dijkstra算法会有所帮助,正如Jonathan所说。您只是不包括您无法访问的网格部分。然后,您的算法将被迫在障碍物周围找到路径,因为它无法通过节点。