如何在java中设计一个面向对象的RPG类系统?

如何在java中设计一个面向对象的RPG类系统?,java,class,oop,roguelike,Java,Class,Oop,Roguelike,我正在做一个基于类系统的流氓,并且遇到了实现类系统的问题。我很确定解决办法很简单,但请耐心听我说 class Creature { int HP; CharacterClass playerClass = new Wizard(); HP = playerClass.hitDie; ArrayList<Ability> creatureAbilityList = new ArrayList<>(); creatureAbilityL

我正在做一个基于类系统的流氓,并且遇到了实现类系统的问题。我很确定解决办法很简单,但请耐心听我说

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));
    }
}
类生物{
int-HP;
CharacterClass playerClass=新建向导();
HP=playerClass.hitDie;
ArrayList creatureAbilityList=新建ArrayList();
creatiureabilitylist.add(classAbilityList.get(1));
}
类字符类{
int hitDie;
ArrayList classAbilityList=新的ArrayList();
}
类向导扩展CharacterClass{
向导(){
hitDie=6;
添加(新技能(魔法导弹));
}
}

我得到一个“令牌语法错误”;“new Wizard()”后面的分号应为“,”。但是,我相当肯定这不是问题所在,而是我的类和继承的设置方式。我应该如何设置代码?任何帮助都将不胜感激。

您应该将hitDie设置为私有,并使用getter和setter使其可访问以启用polimorphism(因此调用的getHitDie()将是类向导中的一个,而不是类CharacterClass中的一个)

您应该将hitDie设置为私有,并使用getter和setter使其可访问以启用polimorphism(因此调用的getHitDie()将是类向导中的一个,而不是类CharacterClass中的一个)

问题在于下面的行。应该是

    int HP=playerClass.hitDie;

(并删除行
int HP;

问题出在下一行。应该是

    int HP=playerClass.hitDie;

(并删除行
int HP;

您是否尝试过Wizard playerClass=new Wizard()?同时,该生物也可以扩展向导!啊,学习编程的奇迹你应该学习基本语法,学会正确缩进。在生物类中,例如初始化和分配给HP,不允许直接在类下单独分配,它需要在方法或构造函数中或在初始化语句中。@Dinh但是如果我想要一个野蛮类等,这是不允许的。您尝试过Wizard playerClass=new Wizard()?同时,该生物也可以扩展向导!啊,学习编程的奇迹你应该学习基本语法,学会正确缩进。在生物类中,例如初始化和分配给HP,不允许直接在类下面单独分配,它需要在方法或构造函数中,或者在初始化语句中。@Dinh但是如果我想要一个野蛮类,等等,那是不允许的。不要忘了
creatureAbilityList.add(classAbilityList.get(1)),不能在字段中使用。不要忘记
creatureAbilityList.add(classAbilityList.get(1)),不能在字段中使用。