Java 如何在给定起点坐标的情况下找到最近的目标?

Java 如何在给定起点坐标的情况下找到最近的目标?,java,math,path,distance,Java,Math,Path,Distance,我的游戏中有两个目标。我使用广度优先搜索来找到其中一个的路径。我想知道如何使用坐标确定最近的目标。我有我的目标的X和Y坐标(所有int类型) 这是找到最近目标的有效方法吗?这样我的AI玩家就可以直接接近目标了?注:我的Ai玩家只能向4个方向移动,所以对角线被排除在外。我的另一个想法是用毕达哥拉斯来寻找距离 只要稍加修改,您的方法就可以工作了。您不希望获取完整表达式的绝对值,但每个组件: int traget1dist = Math.abs(playerX - target1x) + Math.a

我的游戏中有两个目标。我使用广度优先搜索来找到其中一个的路径。我想知道如何使用坐标确定最近的目标。我有我的目标的X和Y坐标(所有int类型)


这是找到最近目标的有效方法吗?这样我的AI玩家就可以直接接近目标了?注:我的Ai玩家只能向4个方向移动,所以对角线被排除在外。我的另一个想法是用毕达哥拉斯来寻找距离

只要稍加修改,您的方法就可以工作了。您不希望获取完整表达式的绝对值,但每个组件:

int traget1dist = Math.abs(playerX - target1x) + Math.abs(playerY - target1y);

这就是所谓的,是一个常见的衡量瓷砖为基础的搜索作为您的。由于广度优先搜索是可行的,所以您的解决方案将起作用。

只需稍加修改,您的方法就会起作用。您不希望获取完整表达式的绝对值,但每个组件:

int traget1dist = Math.abs(playerX - target1x) + Math.abs(playerY - target1y);

这就是所谓的,是一个常见的衡量瓷砖为基础的搜索作为您的。因为广度优先搜索是可行的。所以问题是:它有效吗?我建议这样做(见我的答案)。否则,这里有一些完美的代码示例(好吧,请参阅我的答案中的结果初始化)。@Igor是的。谢谢但我想知道是否有一个最佳的解决方案。比我做这件事的方式要好。好吧。。。我不知道怎么做,除非你能“从后面”接近你的目标(做一个钩子)。在这种情况下,距离较近的目标实际上比另一个目标要长,所以问题是:它有效吗?我建议这样做(见我的答案)。否则,这里有一些完美的代码示例(好吧,请参阅我的答案中的结果初始化)。@Igor是的。谢谢但我想知道是否有一个最佳的解决方案。比我做这件事的方式要好。好吧。。。我不知道怎么做,除非你能“从后面”接近你的目标(做一个钩子)。在这种情况下,距离较近的目标实际上比另一个目标要长。
int traget1dist = Math.abs(playerX - target1x) + Math.abs(playerY - target1y);