私はJavaでローグライクゲームを作成しており、すべてのクリーチャーにボディパーツを持たせたいと思っています(ドワーフ要塞のように)。これを実装するための最良の方法は何でしょうか。
2 に答える
まず、プロトタイプベースのオブジェクトモデルを採用することをお勧めします。これは一般に、固定されたOOPスタイルの継承階層よりも柔軟性があります。私のローグライクタイラントでは、たとえば、すべてのゲームオブジェクトにプロパティのHashMapがあります。
次に、プロトタイプの各クリーチャーの体の部分のリストを定義します。このようにして、さまざまな生き物に対してさまざまな体の部分の構成を定義できます(たとえば、翼がある場合もあります)。
最後に、コンポジションを使用してボディパーツを実装します。つまり、クリーチャーにはArrayList
、プロトタイプで定義されたボディパーツのリストに対応するボディパーツのリスト(おそらく?)があります。これらのボディパーツは、それ自体が有効なゲームオブジェクトである必要があります(つまり、独自のプロトタイプがあり、クリーチャーから分離してマップ上に分散させることができます...)。クリーチャーが最初に作成されるときに、クリーチャーの初期化の一部として必要なボディパーツを作成します。
Javaのほとんどのものと同様に、すべてをオブジェクトでモデリングし始めることができます。要件(クリーチャーとボディパーツ)から適切な名詞をすべて取り出し、それらの関係を理解します(クリーチャーにはいくつかのボディパーツがあります)。
public class Creature {
private ArrayList<BodyPart> bodyParts;
// could be array instead
}
public class BodyPart {
public int health;
}
ローグライクゲームでの使用方法は、実際のゲームの書き方によって異なります。
編集:
始めるのに役立つ要点は次のとおりです:https ://gist.github.com/spoike/5023039