有效地计算2D int数组中的距离

时间:2017-01-02 02:51:02

标签: c++14 getdistance

我正在做一个炸弹人型游戏。我想计算两点之间的距离;玩家可以向四个方向移动。如果我在(0,0)并且想要去(5,5),我可以使用出租车距离公式((5-0)+(5-0))计算距离,因为我只能移动水平和垂直。

但现在我想在游戏中实现玩家无法通过的墙壁。

我目前实施的距离只是使用出租车公式。

int distanceTo(Position Pos)
{
    return (abs(this->x - Pos.x) + abs(this->y - Pos.y));
}

考虑到介于两者之间的不可移动的盒子/墙壁,如何找到两点(x1,y1)和(x2,y2)之间的距离?

1 个答案:

答案 0 :(得分:1)

有了障碍物,您需要用更复杂的寻路算法替换您的简单出租车距离公式。

你的网格有多大? Dijkstra的算法适用于小网格,A *(Dijkstra的修改版)适用于较大的网格。

Amit Patel拥有描述Dijkstra和A *的优秀资源,以及每个人的实施细节。您可以查看here