我一直在做一个游戏,在游戏中我是一个驯服怪物的召唤师(很像口袋妖怪)。 我想要做的是,有一个5个驯服怪物的背包,我可以一次产生1个。 有人建议我使用枚举(我不能再联系那个人:(),所以我一直在看一些enum教程和例子,我无法弄清楚这对我有什么帮助。
让我们说enum看起来像这样:
public enum TamedMonsterStats {
ELF(0,"res/siren_monster_girl_sprite_by_tsarcube-d52y2zu.png",0,100);
DRAGON(0,"res/dragon.png",0,100);
private int haveit;
private String photoname;
private int typeOfDamage;/*
* 0: dark
* 1: light
* 2:
*/
private int HP;
TamedMonsterStats(int haveit,String photoname,int typeOfDamage,int HP){
this.haveit = haveit;
this.photoname = photoname;
this.typeOfDamage = typeOfDamage;
this.HP = HP;
}
public int getHaveIt(){
return haveit;
}
public String getPhotoName(){
return photoname;
}
public int getTypeOfDamage(){
return typeOfDamage;
}
public int getHP(){
return HP;
}
public void setHp(int hp) {
HP = hp;
}
}
这有点工作,但正如daveychu所指出的那样,这使得我无法拥有同一个生物的2个实例,所以我的想法是拥有一个带有monster1,monster2,monster3,monster4,monster5的枚举背包,然后动态填充它们,但我觉得这样做意味着我根本不需要枚举,这是真的吗?
答案 0 :(得分:4)
您可以在枚举上添加setter方法:
public void setHp(int hp) {
HP = hp;
}
但是,我对你使用enum有点警惕。在这种情况下,任何时候只能存在一个“DRAGON”实例,所以我想知道如果用户希望拥有更多这样的实例,或者如果敌人同时拥有一个“DRAGON”,你会做什么。
另一方面,你的typeOfDamage是枚举的绝佳选择:
public enum DamageType {
DARK,
LIGHT,
NORMAL
}
然后您可以使用此枚举:
ELF(0, "res/siren_monster_girl_sprite_by_tsarcube-d52y2zu.png", DamageType.DARK, 100),
DRAGON(0, "res/dragon.png", DamageType.LIGHT, 100);
private DamageType typeOfDamage;
TamedMonsterStats(int haveit, String photoname, DamageType typeOfDamage, int HP) {
this.typeOfDamage = typeOfDamage;
}
public DamageType getTypeOfDamage() {
return typeOfDamage;
}
它使得它比必须传递一些随机整数更具可读性。