我正在进行2D数组映射,例如:
这是一个游戏。 'T'代表巨魔,'P'代表玩家。在这个游戏中,巨魔会追逐玩家。假设玩家现在不移动。 巨魔的位置(行,列)是(3,2),而玩家的位置是(0,5)。
巨魔可以向右上方向走来追逐玩家。也就是说,它只需要走3步即可到达P位置:
但是,当我使用欧几里得距离公式时:
* 0 1 2 3 4 5 6
0 # # # # # P #
1 # # # # # # #
2 # # # # # # #
3 # # T # # # #
4 # # # # # # #
这是一个游戏。 'T'代表巨魔,'P'代表玩家。在这个游戏中,巨魔会追逐玩家。假设玩家现在不移动。 巨魔的位置(行,列)是(3,2),而玩家的位置是(0,5)。
巨魔可以向右上方向走来追逐玩家。也就是说,它只需要走3步即可到达P位置:
(3,2)->(2,3)->(1,4)->(0,5)
但是,当我使用欧几里得距离公式时:
(int) Math.floor(Math.sqrt(Math.pow((0-3) , 2) + Math.pow((5-2) , 2))) ;
需要走四步才能到达那里。
我对距离公式感到非常困惑。在这种情况下我不能使用它吗?但在某些情况下,它可以迈出正确的步伐。
希望有人能解释一下这个问题,谢谢。