Javascript 使用标记标记装置可能进入的字段*

Javascript 使用标记标记装置可能进入的字段*,javascript,a-star,Javascript,A Star,我用*算法在六边形地图上寻找最短路径。但在我实现我使用的A*算法之前。(点击装置) 为了找到最短的位置,我已经在使用A*了,现在我想用A*来标记单元可能要去的字段。现在我使用这个函数: 我的问题是什么是解决这个问题的最好方法?我必须找到到每个场地的最短路径并获得路径长度,然后将长度与装置的移动进行比较吗?这个解决方案不好而且速度很慢 你有什么更好的解决方案吗?对于类似于战地科技的游戏,我也有类似的问题 我所做的是执行A*,但我只在“打开”列表为空(已达到所有十六进制)或该列表中的最低值为无穷大(

我用*算法在六边形地图上寻找最短路径。但在我实现我使用的A*算法之前。(点击装置)

为了找到最短的位置,我已经在使用A*了,现在我想用A*来标记单元可能要去的字段。现在我使用这个函数:

我的问题是什么是解决这个问题的最好方法?我必须找到到每个场地的最短路径并获得路径长度,然后将长度与装置的移动进行比较吗?这个解决方案不好而且速度很慢


你有什么更好的解决方案吗?

对于类似于战地科技的游戏,我也有类似的问题

我所做的是执行A*,但我只在“打开”列表为空(已达到所有十六进制)或该列表中的最低值为无穷大(即十六进制不可检查)时停止。这就像没有“目的地”十六进制。使用此解决方案,每个十六进制只传递一次(当它是打开映射中的最低值时)

然后,您可以使用计算完成的十六进制(封闭列表)做两件事

  • 移除所有值(在您的情况下,长度)大于移动的十六进制。这只留下你的单位可以去的地方

  • 保留这些十六进制,但根据长度的不同,以不同的颜色显示十六进制。例如,颜色取决于到达目的地的转弯次数(此转弯次数(长度-1)%movement)。这对玩家很有用,因为他现在可以看到当前单位地图上任何(可到达的)十六进制的最快路径

另一种可能是当最小值大于移动值时停止搜索打开的列表(即,你不能一次转到那里)。这将限制搜索中使用的十六进制数

问候