【问题标题】:How to move away from a point inside a grid如何远离网格内的一个点
【发布时间】:2016-02-24 13:20:50
【问题描述】:

我正在制作山羊/屠夫游戏(自上而下,基于二维网格)。山羊必须避开屠夫,否则他将付出最终的代价。山羊被限制在一个看起来像这样的区域:

我将如何以最合乎逻辑的顺序将山羊从屠夫那里移开,所以当它走投无路时,它会像这样移动:

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

注意事项:

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

山羊跑得比屠夫快。

允许对角线移动。

网格内没有障碍物。

我会用java写这个。

【问题讨论】:

  • 如果他们的速度相同,你总会被抓住。你想尽可能多地跑步吗?你能在球场上斜着走吗?例如从 A1 移动到 B2(使用国际象棋终端:) 或者你需要去 A1-A2-B2
  • 这与 Java 有什么关系?
  • @VeselinDavidov 山羊的移动速度比屠夫快。允许对角线移动。
  • @Tichodroma 对不起,我对 SO 很陌生。标签已被编辑。

标签: path-finding


【解决方案1】:

取决于你想如何离开。 greedy algorithm 很擅长逃跑,如果山羊可以做出的每一个动作都有一个与之相关的权重,这样让你走得更远的动作更有价值(这可以根据屠夫的 x,y 和每个位置的 x,y)。从中您可以找到具有最大短期利益的路径。您可能希望限制搜索的深度以满足您的需要。

如果您想找到到达最远点的最短路径dijkstra's algorithm 会更好,但您必须找到一种方法来确保山羊在到达该点的途中不会靠近屠夫。

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

【讨论】:

    猜你喜欢
    • 2017-01-03
    • 2015-12-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多