2009-04-09 33 views
10

私は現在、非常に基本的なJavaゲームを、Theme Hospitalに基づいて作成しています。Pathfinding 2D Javaゲーム?

私はかなりJavaに慣れていて、現在私の最初の1年間は大学で勉強しています。私はJavaをほぼ2年間オン/オフしてきましたが、ついにまともなプロジェクトに専念しています。

私は病院に入院するために人(患者)を作成する必要がある段階にあります。彼らはフロントオフィス、GPのオフィスに行く必要がありますし、彼らの開始位置に戻ってください。

私はA *パスの検索に目を通しましたが、それは本当に複雑です。私はそれがどのように機能するのか理解していますが、それを自分のゲームにどのように実装するのかはわかりません。

これまでのところ、ユーザーはフロントデスクを設置してGPのオフィスを構築することができます。これらのそれぞれには、患者が到達しなければならない場所となる「使用のポイント」があります。グリッドの四角は完全にしかできない、異なる地形はありません。

私はここ数ヶ月でGUIを扱うための新しいテクニックをたくさん学ぶので、どんなコードも貼り付けるのは躊躇します。私の計画は、マイルストン1に乗り込み、患者を机に通してからオフィスに行ってから退室させることです。いったんこれを取得すると、コードをもっと整理します。

私は多くのA *と多くの異なるタイプの実装を見てきました。誰かが私に協力できる出発点を与えることができますか?私は、既に書かれたクラスのセットを試して、適応させるべきですか、ゼロから自分自身を書き込もうとしますか?

+0

A *実装へのリンクについては、私のポストを参照してください。 – TofuBeer

答えて

6

A *が必要です。これは、グリッドベースの経路探索の最適な実装です。

これはあなたを助けるかもしれない:

http://www.cokeandcode.com/main/tutorials/path-finding/

EDIT:先行リンクは、クラスの実装可能なセットとして、あなたの満足を満たすために方法を見つけるのパスをカスタマイズするためのガイドとしての両方に適しています。

+0

ああ、私のゲームのアイデアのためのものを最初に研究するとき、私は今月前に見つけました。私はそれを読んで、役立つかどうか見てみましょう。ありがとう:) – Relequestual

4

AI for Game Developersには、A *の説明があります。私は実際に今日の実装を書こうとしていました...もし私がすれば、ここにコードを投げます。

コードが完成しました。ここに入れるには大きすぎますので、https://chaos.bcit.ca/svn/public/astar/(自己署名入りの証明書ですが、サーバーは何も悪いことはしません)から入手できます。

私は本の中のほとんどの部分で擬似コードに従っていましたが、A *のためにこれまで見てきたものよりもずっとオブジェクト指向のものを作っていました。

あなたはタイルで構成される迷路を持っています。各タイルには場所と障害物があります(障害物がない場合はnull)。

PathFinder(AStarなど)を使用して、指定した開始位置と終了位置の間の最短パスを見つけることができます。あなたは最初から最後まで進むために必要なタイルを含むパスバックを取得します。

ヒューリスティック計算を変更するには、別のHeuristicCalculatorを使用します(現在のものは、障害物があるかどうかを確認し、最短のタイル数を調べます。異なる障害物に加重を加えるあなたがデフォルトを気に入らなければインスタンス)。

コードはLGPLの下でライセンスされているため、変更してアプリを配布する場合は、変更を有効にする必要があります。ライセンスコメントの電子メールアドレス(各ヘッダーに記載されています)にバグレポート/修正を送信してください。

試験の後にコメントしてもらえますが、それはかなり簡単です。

+0

うわー私はとても、非常に高速な応答が好きです。 ありがとうございました。 あなたの実装を使用した場合は、もちろん完全なクレジットを与えるでしょう! – Relequestual

+0

心配することはありません(元の少数の学生だけが私の本名をここに知っています:-) – TofuBeer

+1

興味深い、広範な、または涼しい何かを投稿すれば、あなたはすばやい反応を得るでしょう。多くの人が経験を積んだことのない正確な技術的質問、または詳細がほとんど書かれていないひどく書かれた質問では、SOの静かな面が見えます。 :) –

2

もちろん、独自の実装を作成すると、経路探索について多くのことが学べます。しかし、あなたはそれをやるのに多くの時間を費やすでしょう。

一般的なグラフを扱うライブラリはJGraphTで、素晴らしいAPIを持ち、の最短パスアルゴリズムをサポートしています。

+0

JGraphTリンクありがとうございます。 –

5

これは私が今までに見た中で最も有益な経路探索のポストです:http://www.ai-blog.net/archives/000152.html

+1

クールな記事、ありがとう。 –

+0

リンクがダウンしています。 – Laurent

+1

リンクが(効果的に)壊れています。そのサイトのメインページにリダイレクトされます。 –

0

たぶん、あなたはあなたが望んでいますが、ここで*経路探索の素敵な説明とのリンクです。私はC++でゲームにA *を実装しなければなりませんでした。

http://www.abdn.ac.uk/~csc245/teaching/CS1015/practicals/aStarTutorial.htm

+0

リンクが(事実上)壊れています:*このサーバーの/~csc245/teaching/CS1015/practicals/aStarTutorial.htmにアクセスする権限がありません。 –

関連する問題