如何远离网格内的某个点

时间:2016-02-24 13:20:51

标签: path-finding

我正在制作Goat / Butcher游戏(自上而下,基于2d网格)。山羊必须避开屠夫,否则他将支付最终价格。山羊被限制在一个看起来像这样的区域: enter image description here

我如何以最符合逻辑的顺序将山羊从屠夫身边移开,所以当它被逼到绝境时,它会像这样移动: enter image description here

是否有任何寻路算法可以为山羊检索最佳目的地?

注意:

我无法访问屠夫的属性,如速度,速度或类似物。然而,我可以查询它的当前(x / y)位置,方向和距离山羊的距离。

山羊的速度比屠夫快。

允许对角线移动。

网格内部没有障碍物。

我将在java中写这个。

1 个答案:

答案 0 :(得分:1)

取决于你想要离开的方式。一个greedy algorithm擅长逃脱,如果山羊可以做的每一次移动都有一个与之相关的权重,那么让你离得更远的移动值得更多(这可以根据x,y来计算)屠夫和每个位置的x,y)。从这里你可以找到具有最大短期利益的道路。您可能希望限制搜索的深度以满足您的需求。

如果你想找到离最远点最短的路径dijkstra's algorithm会更好但是你必须找到一种方法来确保山羊在去往那一点的路上不会靠近屠夫。

考虑到问题,贪心算法可能是更好的选择,因为短期避免可能在您的问题中更重要。