定義済みのパスを使用せずに、タワーディフェンスゲームをFlashで作成しています。
私のグリッドは40x40(小さい?)ですが、A *は毎回再計算するときに苦労しています。そのため、再計算を簡単にするために独自の変更を加えたため、タッチされたセルの数は約900に減少しました(ルートの近くで変更した場合)。新しいタワーが設置されると、非常に短時間ですが検出可能な時間はフリーズします。
これは実装の問題ですか、それとも40x40が多すぎますか?
編集:
私のコードの構造:
- すべてのデータは、セルの2D配列に保存されます。
- 各セルには、パス方向の親(時計回りに1〜8)と、パス内の子のビットごとにエンコードされた配列(すべてのビットが子を表す)が含まれます。
- 検索は、ユークリッド距離の推定値を使用してA *によって実行されます。