我正在做二维数组映射,如:
* 0 1 2 3 4 5 6
0 # # # # # P #
1 # # # # # # #
2 # # # # # # #
3 # # T # # # #
4 # # # # # # #
Run Code Online (Sandbox Code Playgroud)
这是一场比赛.'T'是巨魔,'P'是玩家.Troll在这场比赛中追逐球员.假设玩家现在不会移动.Troll的位置(行,列)是(3,2)和玩家(0,5)
巨魔可以通过向右上方向走来追逐玩家.这意味着,到达P位置只需3个步骤:
(3,2)->(2,3)->(1,4)->(0,5)
Run Code Online (Sandbox Code Playgroud)
但是,当我使用欧几里德距离公式时:
(int) Math.floor(Math.sqrt(Math.pow((0-3) , 2) + Math.pow((5-2) , 2))) ;
Run Code Online (Sandbox Code Playgroud)
去那里需要4个步骤.
我对距离公式很困惑.在这种情况下我不能用它吗?但在某些情况下,它需要正确的步骤.
希望有人能解释这个问题,谢谢.