単純なグリッドで最短パスを見つける単純なアルゴリズムをAs3で使いたいのですが、私は完全なパスでなければなりません。ここ単純なグリッドでパスを見つけるには障害物がありません
チェック画像:http://screencast.com/t/GmR5YaO4L
ので、私は、*は一種の過剰障害物がない場合であるが、Bに
単純なグリッドで最短パスを見つける単純なアルゴリズムをAs3で使いたいのですが、私は完全なパスでなければなりません。ここ単純なグリッドでパスを見つけるには障害物がありません
チェック画像:http://screencast.com/t/GmR5YaO4L
ので、私は、*は一種の過剰障害物がない場合であるが、Bに
からのパスに来て、グリッドのすべての平方数を必要とし、 http://www.newarteest.com/flash/astar.html
EDIT:私はAS3にそれのためのライブラリを書いているので、あなたは同様にそれを使用する可能性がありますあなたは何もそれが与えるので、経路探索が、私はまだ*をお勧めします障害を持っていることはありません100%未満の確実な場合あなた最も柔軟性がありますが、特定のケースでは、斜めにではなく、一度水平方向に、次に垂直方向に(または逆の方向に)移動するだけなので、障害なしでパスを見つけるのはかなり簡単です。
まず、位置のx成分とy成分を減算して、どちらの方が長いかを決定し、その方向に移動を開始します。次に、オブジェクトがその軸上の同じ位置にあるとき、他の方向に移動するように切り替えます。
必要に応じて、パス全体を見つけるループまたは再帰関数を簡単に作成できますが、パス全体を事前に知らなくても正しい方向にオブジェクトを移動する方が簡単です。いずれの場合も、すべてのノードをループする必要があるため、ノードを2回ループする必要はありません。
私はそれを見ていて、私はas3を初めて使っています。私は行22を理解していませんでした - public static function go(xIni、yIni、xFin、yFin、lvlData):Array { - どうしますか:Arrayの部分は何ですか?配列ではなく関数になっていますか?ありがとう – apscience
それは、その関数の結果として配列を返すことを意味します。具体的には、パス内のノードの配列です。その配列を使用する方法(サンプルコードで説明)は、配列をループして格納された位置に順番に移動することです。 – jhocking
素晴らしい、あなたのA *ライブラリはちょうど素晴らしい:)感謝、ちょうど私が欲しかった仕事。 – coderbanna