gpt4 book ai didi

java - 枚举可以改变吗?

转载 作者:行者123 更新时间:2023-12-01 18:49:02 25 4
gpt4 key购买 nike

我一直在开发一款游戏,在游戏中我是一个驯服怪物(很像口袋妖怪)的召唤师。我想做的是,背包里装着 5 个已驯服的怪物,我可以一次生成 1 个。有人建议我使用枚举(我无法再联系那个人了:(),所以我一直在查看一些枚举教程和示例,但我不知道这对我有什么帮助。

假设枚举如下所示:

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 的枚举背包,然后动态地用值填充它们,但我觉得这样做意味着我根本不需要枚举,这是真的吗?

最佳答案

您可以在枚举上添加 setter 方法:

public void setHp(int hp) {
HP = hp;
}

但是,我对您对枚举的使用有点警惕。在这种情况下,任何时候都只能存在一个“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;
}

它比必须传递一些随机整数更具可读性。

关于java - 枚举可以改变吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16477586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com