2011-08-10 8 views
2

私のAS3のA *経路探索の実装では、時々、むしろこのように、最も効率的なルートを返しません。マイA *は経路探索の実装期待される結果を与えていない

[E][X][ ][ ][ ] 
[.][X][.][.][ ] 
[ ][.][ ][i][S] 

(ここで、ノードが歩いあり、かつXがあります。私の想像上のマーカー)

問題:私は合計のスコアが30 +(開始からの距離)10 = 40、上記のタイル私は合計スコアが40でなければなりません(開始からの距離)14 = 54.なぜ54が40の代わりに選ばれたのですか?私はこれを使用して合計得点が最も低いノードを見つけますオープンリスト:

 var lowestTScore:int = 10000; 
     var pointerTo:PathNode; 
     for each (var Cur:PathNode in openList) { 
      //loops through each node in openlist and finds the one with lowest total score. 
      if (Cur.distS + Cur.distE < lowestTScore) { 
       lowestTScore = Cur.distS + Cur.distE; 
       pointerTo = Cur; 
      } 
     } 

私は多分それは私が最後までの距離を計算すると、エラーだ、と思った(私はすべての問題を見ることができません。)。だから私はそのために自分のコードをチェックする:

theNode.distE = (Math.abs(theNode.xpos - endPts[0]) + Math.abs(theNode.ypos - endPts[1])) * 10; 

(これは、再び、私は何の問題も見ることができません。)

私は本当にこの上で困惑。

Main.as:http://pastebin.com/ZKQJwY4S PathSearcher:として:http://pastebin.com/KnmWGbQw

(私は直接、問題のコードを投稿することが優れていることを理解しますが、問題のコード:(申し訳ありませんがどこにあるか私は知らない)

ときchの任意の助け

ありがとう!

答えて

1

問題を発見!私は

theNode.distS = theNode.parentNode.distS + cost; 

を追加しませんでしたtheNodeの怒っている両親。私はparentNodeだけを変更しましたが、distSスコアは変更しませんでした。

関連する問題