2011-07-18 7 views
4

私は、選択されたユニットを目的地まで誘導するための道案内が必要なパズルゲームを作っています。これは私の初めてのパスファインディングであり、私が理解しやすいaStarメソッドを選択しました。 (この素晴らしいページのおかげでhttp://www.policyalmanac.org/games/aStarTutorial.htm)。 私は実際に期待していたよりもずっと進んできましたが、まだ若干の小さな問題があります。経路探索の助けが必要です!

私は誰もが理解しないだろう長い説明を書くことができますが、あなたが見ることができるので、代わりに私は私のフラッシュのプロジェクトをアップロード:ない( http://www.martinowullems.com/pigsplode/pigsplode%20flash.html

は豚を選択し、それが歩く作るために、第2のタイルを選択下のタイル、彼らは盗んでいる:P)。暗いタイルは、不安定です。赤いタイルは、生成されたパスに属するタイルです。私は正しい軌道に乗っているようだが、ちょっとした間違いをしているような感じがする。私は、最良のノード(findNextNode関数)を選択すると何か間違った気持ちになりました。

私はあまりにも長くコードを見つめており、進歩していません。 私は他の人の実装を見てみましたが、私はいつも他の人の仕事を理解するのに苦労しています。

ご協力いただけると助かりますが、プロジェクトに移りたいと思います!

あなたがチェックアウトして、コードをいじることができますので、私はwonderflバージョンを作った:、placeNode()機能で http://wonderfl.net/c/hRtO

+0

ワンダーフリンクが追加されました:http://wonderfl.net/c/hRtO – omgnoseat

答えて

0

現在のノードがオープンリストにすでにある場合には、あなたが変更されていません新しい親ノードを使用してG値が改善されたときの親ノード。

//if it is already on the open list - check if it is a better option 
    if (node.G > parentnode.G + 10) { 

    //recalculate 
     node.parentNode = parentnode;  //add this line 
     node.G = parentnode.G + 10; 
     node.F = node.G + node.H; 
    } 

これは唯一の問題ではないかもしれませんが、潜在的なエラーの原因のようです。それが役に立てば幸い。

+0

ありがとうヘッドアップ!絶対に忘れてしまった。それは解決策ではなかった:( しかし、それは間違いなく将来の問題を修正している:) – omgnoseat

関連する問題