1

私はゲームに取り組んでおり、そのゲームでは、モンスター (ポケモンによく似ています) を飼い慣らした召喚士です。私がやりたいことは、一度に 1 匹ずつスポーンできる 5 匹の飼いならされたモンスターのバックパックを用意することです。誰かが私に列挙型を使用するように勧めました (もうその人に連絡することはできません :() ので、いくつかの列挙型のチュートリアルと例を見てきましたが、これがどのように役立つかわかりません。

列挙型が次のようになるとしましょう:

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つのインスタンスを持つことができなくなります。値を動的に使用しますが、これを行うと、列挙型をまったく必要としないことを意味するように感じますが、これは本当ですか?

4

1 に答える 1

5

列挙型にセッター メソッドを追加できます。

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

ただし、列挙型の使用には少し注意が必要です。この状況では、「DRAGON」インスタンスは常に 1 つしか存在できないため、ユーザーが複数のインスタンスを持ちたい場合や、敵が同時に 1 つ持っている場合はどうするのだろうか。

一方、 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;
}

ランダムな整数を渡す必要があるよりもはるかに読みやすくなります。

于 2013-05-10T08:12:30.920 に答える