0

我正在制作一个轰炸机类型的游戏。我想计算两点之间的距离;玩家可以向四个方向移动。如果我在 (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) 之间的距离?

4

1 回答 1

1

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

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

Amit Patel 有一个很好的资源来描述 Dijkstra 和 A*,以及每个的实现细节。你可以在这里查看

于 2017-01-02T03:49:29.407 回答