我目前正在筹划一款游戏,但我很难找到寻路算法,我想知道一个慷慨的灵魂是否能够帮助我。
在这种情况下,我需要一种算法来计算绕过障碍物或摧毁它们是否更好。我给了"难度"到我游戏的每个牌。例如,基本瓦片为1,障碍物可以在5-100之间。
以下是一些例子。我必须从红场搬到蓝色广场。如果我在途中遇到障碍,我应该得到这样的东西:
说明:左或右路径只有3个难度,障碍物是5个。所以最好四处走走。
第二个例子:
说明:算法为3选择,打破障碍或左右走动,因为它的难度级别相同。
最后一个例子:
说明:该算法必须能够找到一个"弱点"并能够走到它并摧毁它。
我会继续努力。希望你能给我一些指导。
答案 0 :(得分:2)
您可以使用Dijkstra的算法。要使用该算法,我们将定义以下图表。每个方块都是图中的一个节点。在两个相邻的正方形之间,我们将定义2个有向边。边缘的权重将是写在尖头节点上的数字(例如,对于边缘(a,b),权重将是写在方形b上的数字)。
然后,通过在上面定义的图上运行Dijkstra算法,我们将得到最短的路径。
答案 1 :(得分:2)
你可以使用Dijkstra's algorithm的非常微小的变化(实际上没有任何变化,你只是解释不同的弧成本)来做到这一点。
基本上,您可以以破坏为代价到达障碍广场的“内部”,因此您有一个图表,其中所有节点 连接到其所有邻居(即障碍物不要“断开”干预节点。)
所以在这种情况下,从A到B,
1 1 A 1 1 1
1 1 1 1 1 1
2 5 5 5 2 1
1 1 B 1 1 1
费用将是
2 1 A 1 2 3
3 2 1 2 3 4
5 7 6 7 5 5
6 7 B 7 6 6
你会直接向下走。