所以我制作的游戏如下所示: https://gyazo.com/9d72dd5a9ac29f059ed474376f9679a2
现在我正在尝试实施a *算法,让红色油箱进入绿色油箱。不过看一下现有代码(主要是看cokeandcode.com上的寻路),它们已经使用基于网格的地图实现了。
我的游戏是基于网格的,但是迷宫的墙壁是由每个方形的边缘制成的。网格,一些墙壁向上,一些向下制作迷宫。以下链接可以更好地说明这一点:
https://gyazo.com/afefe7d2bdc2b5f02bf546090459f539
我的问题是,如果我的地图不完全基于网格,我将如何从cokeandcode网站实现寻路算法。如果网格的正方形不可通过,则算法知道路径是否被阻挡,但是在我的游戏中,所有正方形都是可通过的。每个广场的墙壁都是不可通行的。
答案 0 :(得分:2)
它仍然主要基于网格,不同之处在于,并不是说瓷砖是完全不可行的,它们并不总是连接到它们所有的4个邻域。
就A *而言,这意味着你的邻居" -function是非常重要的,必须考虑到墙壁。
例如,您可以为每个单元存储2位,一个用于指示它是否连接到南方,一个用于东方。然后,要计算一个单元的邻居,你必须向3个单元格询问它们的位图,这可能有点棘手。您还可以存储每个单元格的所有4位。
如果地图存储为行列表,那么计算邻居会更烦人,因此我只建议将其作为存储格式,而不是内存格式。
答案 1 :(得分:0)
一些建议:
Cell
对象,其中存储您需要的任何值加上 4个布尔值(可能在数组中),表示您是否可以进入4个方向中的每一个。然后只需制作这些物体的7x7网格。