针对墙的{*寻路算法

时间:2017-03-06 17:43:43

标签: java algorithm path-finding

所以我制作的游戏如下所示: https://gyazo.com/9d72dd5a9ac29f059ed474376f9679a2

现在我正在尝试实施a *算法,让红色油箱进入绿色油箱。不过看一下现有代码(主要是看cokeandcode.com上的寻路),它们已经使用基于网格的地图实现了。

我的游戏是基于网格的,但是迷宫的墙壁是由每个方形的边缘制成的。网格,一些墙壁向上,一些向下制作迷宫。以下链接可以更好地说明这一点:

https://gyazo.com/afefe7d2bdc2b5f02bf546090459f539

我的问题是,如果我的地图不完全基于网格,我将如何从cokeandcode网站实现寻路算法。如果网格的正方形不可通过,则算法知道路径是否被阻挡,但是在我的游戏中,所有正方形都是可通过的。每个广场的墙壁都是不可通行的。

2 个答案:

答案 0 :(得分:2)

它仍然主要基于网格,不同之处在于,并不是说瓷砖是完全不可行的,它们并不总是连接到它们所有的4个邻域。

就A *而言,这意味着你的邻居" -function是非常重要的,必须考虑到墙壁。

例如,您可以为每个单元存储2位,一个用于指示它是否连接到南方,一个用于东方。然后,要计算一个单元的邻居,你必须向3个单元格询问它们的位图,这可能有点棘手。您还可以存储每个单元格的所有4位。

如果地图存储为行列表,那么计算邻居会更烦人,因此我只建议将其作为存储格式,而不是内存格式。

答案 1 :(得分:0)

一些建议:

  • 制作一个8x8的布尔网格,指示除了7x7方格网格之外的墙壁位置(也就是说,如果出于任何其他原因需要7x7网格)。
  • 如果您还没有,请创建一个Cell对象,其中存储您需要的任何值加上 4个布尔值(可能在数组中),表示您是否可以进入4个方向中的每一个。然后只需制作这些物体的7x7网格。