【问题标题】:Path-Finding algorithm with moving borders具有移动边界的寻路算法
【发布时间】:2014-03-11 14:54:24
【问题描述】:

我的理论有点问题,希望大家帮帮我。

想象一下 2D 游戏...你是一个正方形,你必须从头到尾进行。在开始和结束之间是一些移动的物体。它们以与玩家和彼此不同的速度垂直和水平移动。所以,我需要一些算法来测试玩家是否有机会完成关卡,或者关卡设计是否存在错误。如果您有更多详细信息,请谷歌“世界上最难的游戏”,试试那个游戏,你会看到我需要什么。

我认为我可以使用 A* 算法来查找路径并以某种方式对其进行自定义以处理静态和移动边界,但我不知道如何以及是否可能。

干杯:)

【问题讨论】:

    标签: algorithm path-finding


    【解决方案1】:

    将其解决为“常规”Shortest Path problem 的一种方法是增加问题的维度。

    假设您有一个网格,那么您的图实际上由顶点V={(x,y) | for each x,y on the grid} 和边E={(v1,v2) | can move from v1 to v2 in a single step } 组成。
    以上是“常规”静态图。

    在您的问题中,添加另一个维度 - 时间。 (因此,不是每个顶点仅代表 2 个维度,而是现在代表 3 个!)。你会得到如下图G=(V,E)

    • V = {(x,y,t) | for each x,y and t}
    • E={ ((x1,y1,t),(x2,y2,t+1) | if you can move from (x1,y1) to (x2,y2) in time t}
    • 假设移动对象有某种模式,您可以将其修改为E={ ((x1,y1,t),(x2,y2,t+1%m) | ... }(其中m 是“循环”重复。

    现在,您在图中遇到了一个经典的最短路径问题。如果您的原始源和目标是 (x_source,y_source) 和 (x_target,y_target),则在修改后的问题中,您需要从 (x_source,y_source,0) 转到 (x_target,y_target,~)(其中 ~ 是“don”不在乎”)。

    正如你所说,A* 可以解决这个问题,manhattan distances(仅在 x,y 上)作为可接受的启发式函数。

    【讨论】:

      【解决方案2】:

      我认为这可以通过基本的寻路算法来完成 - 您只需确保为每个状态正确计算障碍物位置。

      【讨论】:

      • 这并不像你说的那么简单。路径查找算法传统上适用于静态图,其中边不会改变..
      猜你喜欢
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多