私が現在使用してC++で*を実装しようとしています:http://www.policyalmanac.org/games/aStarTutorial.htmA *経路探索
をしかし、私は斜めの動きを含めないことを決めた最初のバージョンのために。それは現在のポイントの隣人をチェックするループポイントcにおける要約セクションで
:
for each neighbour of the current square (above, below, left, right)
if neighbour on closed list or not walkable {
continue
}
if neighbour not in open list {
add to open list
set parent of neighbour to current square
update F, G, H values
} else if neighbour is on open list {
check to see if this path to that square is better,
using G cost as the measure. A lower G cost means that this is a better path.
If so, change the parent of the square to the current square,
and recalculate the G and F scores of the square.
}
私は唯一の4方向の移動を許容していた場合、私はまだどうかを確認するためにグラムコストをチェックする必要がありますその広場への道は良いですか?例えば、開始点から始まり、開始点の4つの隣接点は全て同じgを有する。
私が正しく思い出すと、すべての直近の人は同じgコストですが、あなたのターゲットがあなたの場所の北西に対角線上にある場合、西または北の隣から始まるパスのgコストはgコストより低くなりますもしあなたが東または南の隣人から始めるならば。 – mrogers
@NicoSchertlerだから、最低のgコストで隣人をチェックすべきですか?その四角形の親を現在の四角形に設定し、値を更新しますか? – PrimateJunkie
A *アルゴリズムのステップは、セット内のアイテム数(現在のセルの隣)によって変わりません。あなたは地図の向こう側に(隣の細胞に加えて)明確な隣人を持っているワームホール/テレポーターを持っていても、A *はまだ動作します。 –