【发布时间】:2022-01-20 20:27:21
【问题描述】:
如你所见,有一张地图,我想寻路以确定哪些城市彼此喜欢。
地图中的黄色瓷砖是陆地,蓝色瓷砖是海洋。 红色字体表示有水路,绿色字体表示有 是一条路。正确的路径应该是路-路、水-水路、 道路-港口-水路或水路-港口-道路。因此,
2,6City 可以通过 (2,6City)-(1,6)-(0,6)-(1,5)-(2,5)-(3,4Harbor)-( 2,4City),
2,6City 可以通过 (2,6City)-(1,6)-(0,6)-(1,5)-(2,5)-(3,4Harbor)-( 2,4市)– (1,4)-(0,3City)-(0,2)-(0,1)-(0,0City),
2,6City 可以通过 (2,6City)-(1,6)-(0,6)-(1,5)-(2,5)-(3,4Harbor)-( 3,3)– (3,2)-(4,1Harbor)-(3,0City)。
但是,当我使用 GKGridGraph 为 Pathfinding 创建地图时,我不知道如何 告诉水路不通公路的情况。你可以看到,我不想:
2,6City 可以通过 (2,6City)-(2,5)-(2.4City) 或
链接到 2,4City2,4City 与 2,2City 相关联,因为 (2,4City)-(3,4Harbor)-(3,3)-(3,2)-(2,2City)
那么,有什么建议吗?非常感谢。
【问题讨论】:
-
我不熟悉
GKGridGraph。一般来说,我会尝试使用 DFS(您在其中探索每条路径到其终点)并在getNeighbors函数中实现限制。例如,只有道路和港口被视为道路的邻居。 -
感谢您的建议。这是解决我的问题的一种方法,但它似乎有点复杂,因为我需要维护一个新的网格。无论如何,还是谢谢你。
-
我需要维护一个新的网格我不确定你的意思。只需要一种网格表示。
-
好吧。我使用 GKGridGraph 创建我的地图网格,以便我可以使用 GKGridGraph 的 findpath 函数来检查网格中的两个图块是否可以连接。使用DFS时,首先要自己实现DFS功能,然后需要新建一个网格告诉DFS哪些瓦片相互连接。比如:让图=图()让节点A=图.addNode(“a”)让节点B=图.addNode(“b”)图.addEdge(节点A,邻居:节点B)
标签: ios swift algorithm path-finding gameplay-kit