2016-07-22 9 views
0

私はJavaでモンスターを含む2Dゲームを作成しています。インスタンス化された後に外部テキストファイルによってデータが取り込まれたMonsterクラスを持っている方が理にかなっているのでしょうか(それは簡単にモンスターを追加することができます)、あるいはモンスタースーパーそのMonsterクラスを拡張するサブクラスを持っていますか?データを内部的に保存するとJavaの外部に保存する

左側の外部、内部は右

External on Left, Internal on Right

上の全てのモンスターは、同じことを行う場合、私はちょうど、外部データからモンスターを作成することが有益であろう理由を知るが、その制限が希望私はゲームの他の部分で私?

他の場所でこの質問を見つけることができませんでした...ゲームのコーディング方法を計画する際の一般的なシナリオのようです。

答えて

3

でより多くを参照してください。

なぜあなたはあなたを制限するのでしょうか?モンスターを生成するデータをいつでも拡張し、必要なすべての属性と動作を記述することができます。

逆に、ゲームに参加しようとする可能性のあるすべてのモンスターのクラスを持っている場合、コードベースを浪費してしまうという膨大な数のクラスがあります。

Eric Lippertはseries of blog postsを持っています。そこで、彼は非常によく似た設計上の決定を話します。興味深いかもしれません。

+0

はい、私はこれも良い選択だと思います。同様のクラスが多数あることを回避し、プログラムを再コンパイルせずに値を簡単に変更できるようにします。 – puhlen

+0

そのリンクは役に立つと思われるので、ありがとうございます。モンスターが他のオブジェクトとやりとりしているときにモンスターがゲーム内であらかじめ定義されていない場合、私がnullpointer例外に遭遇するかもしれないと心配していたと思いますが、私がモンスターから生成したデータを拡張することができると指摘した... Very有用な洞察ありがとう! – tsmetska

1

IMOあなたは抽象的なクラスのモンスターを作る必要があります。これは、必要な他のクラスで後で拡張されます。

public abstract class Monster() {} 

public class Predator extends Monster() {} 
public class Alien extends Monster() {} 

は、私は単一のクラスを使用して、ファイルに含まれるデータから異なるモンスターのインスタンスを生成することははるかに優れていると思うhttps://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

+0

私も同様です。あなたはおそらくより多くのコード行で終わるだろうと考えていますが、私にとってはもっと組織化されているので、人々は自分のMonsterクラスを拡張して独自のクラスを作成することができます。 – Dominic

関連する問題