假设我有一个二维网格。寻路是我的问题的第二步。
我的事情是,假设我在网格中间有一个单元。我希望能够告诉用户“这些都是您可用的目的地。”。
根据单位可以走多少个方格,我想告诉用户,“这些都是你可以到达的方格。” 然后寻找用户选择的目的地。
进行第一次搜索以显示可到达目的地的最佳方式是什么?
根据地形,地形也可以有限制 och 奖励。
我不知道这被称为什么,因此将不胜感激在哪里寻找或谷歌什么的指针。
干杯! :)
/E
假设我有一个二维网格。寻路是我的问题的第二步。
我的事情是,假设我在网格中间有一个单元。我希望能够告诉用户“这些都是您可用的目的地。”。
根据单位可以走多少个方格,我想告诉用户,“这些都是你可以到达的方格。” 然后寻找用户选择的目的地。
进行第一次搜索以显示可到达目的地的最佳方式是什么?
根据地形,地形也可以有限制 och 奖励。
我不知道这被称为什么,因此将不胜感激在哪里寻找或谷歌什么的指针。
干杯! :)
/E
最好的方法可能是深度优先搜索(http://en.wikipedia.org/wiki/Depth_first_search),限制您可以走多远。
对于网格中的每个点,存储:
为了计算这个,做一个广度优先搜索:
记住要注意,如果您有限制,请在正确的步数后停止搜索。
如果您正确执行此操作,您可以找到所有可到达的点,找出它们的距离有多长,并且还有可用的最短路径(尽管它是“向后”存储的)
不要对最短路径问题进行深度优先搜索!您可能会一遍又一遍地进行许多重复计算。(除非您使用更高级的启发式算法,例如 A* - 但是您应该已经知道自己在做什么)
用相同的数字标记连接的单元格,而不是不同的连接单元格。您可以在http://en.wikipedia.org/wiki/Connected_Component_Labeling找到用于标记单元格的两遍算法。如果单元格的数量不同,则玩家无法到达该位置。