14

私は現在、Theme Hospitalのアイデアに基づいた非常に基本的な Java ゲームを作成しています。

私は Java の初心者で、現在大学で 1 年間勉強しています。私は 2 年近く Java を使ってきましたが、ようやくまともなプロジェクトに時間を割くことができました。

入院する人(患者)を作らないといけない段階です。彼らは受付に行き、次にGPのオフィスに行き、その後元の位置に戻る必要があります。

A* パス検索を調べましたが、非常に複雑に思えます。仕組みは理解できたと思いますが、ゲームに実装する方法がわかりません。

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

過去数か月で GUI に関する多くの新しいテクニックを学んだので、面倒なので、まだコードを貼り付けることをためらっています。私の計画は、マイルストーン 1 に到達し、患者をデスクに移動させ、次にオフィスに移動させ、退院させることです。これができたら、コードをさらに整理します。

私は A* と多くの異なる型の多くの実装を見てきました。一緒に作業できる出発点を誰か教えてもらえますか? 既に作成された一連のクラスを適応させる必要がありますか?それとも、独自のクラスを最初から作成する必要がありますか?

4

5 に答える 5

10

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

これはあなたを助けるかもしれません:

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

EDIT:前のリンクは、実装可能なクラスのセットとして、および満足度を満たすためにパス検索メソッドをカスタマイズするためのガイドとしての両方に適しています。

于 2009-04-09T19:13:57.387 に答える
4

これは、これまでに見た中で最も有益なパスファインディングの投稿です: http://www.ai-blog.net/archives/000152.html

于 2009-04-12T11:45:30.060 に答える
3

当然、独自の実装を作成すれば、経路探索について多くのことを学ぶことができます。しかし、あなたはそれを行うのに多くの時間を費やすことにもなります.

一般的にグラフを扱い、優れた API を持ち、A* 以外の最短パス アルゴリズムをサポートするJGraphTライブラリを確認してください。

于 2009-04-09T23:03:56.880 に答える
3

AI for Game Developersには、A* の非常に優れた説明があります。私は実際に今日実装を書くつもりでした...もしそうなら、ここにコードを投げます。

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

ほとんどの部分で本の疑似コードに従いましたが、これまでに見た A* のどのコードよりもはるかにオブジェクト指向にしました。

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

PathFinder (AStar など) を使用して、特定の開始位置と終了位置の間の最短経路を見つけることができます。最初から最後まで通過する必要があるタイルを含むパスを取得します。

別の HeuristicCalculator を提供することでヒューリスティック計算を変更できます (現在のものは、障害物があるかどうかを確認し、通過するタイルの最短数を計算します。たとえば、別の障害物に重みを追加することができます。デフォルトは好きではありません)。

コードは LGPL に基づくライセンスであるため、変更を加えてアプリを配布する場合は、変更を利用可能にする必要があります。ライセンス コメント (各ヘッダーにあります) の電子メール アドレスに、バグ レポート/修正を自由に送信してください。

試験後にコメントするつもりはありますが(したことはありません)、かなり簡単だと思います。

于 2009-04-09T19:14:11.800 に答える
0

探していたものが見つかったかもしれませんが、ここに A* パスファインディングのわかりやすい説明が記載されたリンクがあります。ゲームに A* をC++で実装する必要がありましたが、それがどのように機能するかを理解するのに大いに役立ちました。

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

于 2012-04-16T10:33:47.333 に答える