2011-02-04 7 views
3

2dグリッドを持っているとしましょう。パスファインディングは私の問題の第二のステップです。2dグリッド到達可能な宛先

私のことは、グリッドの中央にユニットがあるとします。私はユーザーに "これはあなたの利用可能なすべての目的地です"と伝えたいと思っています。

ユニットが歩くことができるスクウェアの数に基づいて、「これらはあなたが到達できるすべての四角形です。」というユーザーを表示したいと思います。ユーザーが選択した宛先をパスファインドします。

到達可能な目的地を表示するための最初の検索を行う最もよい方法は何ですか?

地形には地形に応じてボーナスの制限があります。

私はこれが何であるかわからないので、どこを見ているのか、何をgoogleにするのが大変に評価されますか。

乾杯! :)

/E

+0

[デスクトップタワー防衛](http://www.handdrawngames.com) /DesktopTD/Game.asp)クローン? – finnw

答えて

2

、店舗:

  • この点ユニットからの最小距離。
  • 最短経路でユニットに向かう次のステップ。 0へのあなたのユニットの点距離コストとその「パスポインタは」ヌル/関係ありません設定し

    • :、これを計算する幅優先探索を行うには

  • キューを作成し、その中に最初のポイントを配置します。
  • キューが空ではありませんが:
    • は、次の点を取り、それを伝播する(すべての隣人を見て、現在のポイントを介してそれらに行くことは有益である場合には、それらの距離/パスを設定し、最後に追加します。

)キューのあなたは限界を持っている場合は、手順の正しい数の後に検索を停止するようatentionを支払うことを忘れないでください。

あなたはこれを正しく行う場合は、すべての到達可能なポイントを見つける彼らの距離はどのくらい見つけても利用できる最短パスを持つことができます(それは「後方」が格納されているが)


しないでください最短パス問題の深さ優先検索あなたはおそらく何度も何度も繰り返し計算を繰り返します。 (A *などの高度なヒューリスティックアルゴリズムを使用している場合を除き、それでもあなたは何をしているのかを既に知っているはずです)

+0

幅優先とその親戚が重み付けされた木などについて話すので、これは取るべき最善のアプローチのようです。今どこから始めたらいいか分かります。ありがとうございました。 :) – Einarsson

4

最良の方法は、おそらくあなたが行くことができますどのように遠くの上限と深さ優先探索(http://en.wikipedia.org/wiki/Depth_first_search)になります。

1

同じ番号で接続されたセルにマークを付け、異なるセルには接続しません。セルをマークするための2回通過アルゴリズムがhttp://en.wikipedia.org/wiki/Connected_Component_Labelingにあります。セルの数が異なる場合、プレイヤーはその場所に到達できません。グリッド内の各点について

関連する問題