具有移动边界的路径寻找算法

时间:2014-02-12 23:31:18

标签: algorithm path-finding pathfinder

我对理论有点问题所以我希望你们能帮助我。

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

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

干杯:)

2 个答案:

答案 0 :(得分:3)

将其解决为“常规”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)作为可接受的启发函数,这个问题是可以解决的。

答案 1 :(得分:0)

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