2017-10-25 15 views
0

私はTrystan's Tutorialに基づいてroguelikeを作っており、クラスシステムの実装に問題があります。私は解決が簡単だと確信していますが、私と一緒にいてください。JavaでOOPを使用してRPGクラスシステムを設計するにはどうすればよいですか?

class Creature { 
    int HP; 
    CharacterClass playerClass = new Wizard(); 
    HP = playerClass.hitDie; 
    ArrayList<Ability> creatureAbilityList = new ArrayList<>(); 
    creatureAbilityList.add(classAbilityList.get(1)); 
} 

class CharacterClass { 
    int hitDie; 
    ArrayList<Ability> classAbilityList = new ArrayList<>(); 
} 

class Wizard extends CharacterClass { 
    Wizard() { 
     hitDie = 6; 
     classAbilityList.add(new Ability(magicMissile)); 
    } 
} 

私は、「トークンの構文エラー 『を取得しています;』、予想」、「新しいウィザードを()」以下のセミコロンに。私はこれが問題ではなく、代わりにクラスと継承が設定されていることを確信しています。代わりにコードを設定する必要がありますか?どんな助けもありがとう。

+0

は、あなたが)ウィザードplayerClass =新しいウィザードを(試してみました持って

int HP=playerClass.hitDie; 

(とラインint HP;を削除)する必要があります。 ? また、クリーチャーはウィザードを拡張することもできます。 – Dinh

+1

ああ、プログラム学習の驚異! :基本的な構文を勉強し、適切にインデントすることを学ぶべきです。例えば、クリーチャークラスでは。あなたは初期化とHPへの割り当ての両方を行うことができますが、クラスの下で別々の割り当てを直接行うことはできません。メソッドやコンストラクター、またはinitiationステートメントの中に配置する必要があります。 – Adam

+0

@Dinhしかし、私がバーバリアンのクラスなどを望むなら、それは許されません。 – Ben

答えて

3
ゲッターとセッターとそれがアクセスできるようにする必要があります

問題は次の行です。それは

+0

それは、大変ありがとうございました! – Ben

+0

@Benこの回答は正しいと思います。 – OptimusCrime

+0

'creatureAbilityList.add(classAbilityList.get(1));'を忘れないでください。これはフィールドでは使用できません。 –

0

あなたはhitDieをプライベートに、そしてpolimorphismを有効にする(そのために呼び出さgetHitDieは()の代わりにクラスCharacterClassの一つのクラスウィザードのいずれかになります)

関連する問題