Home > Mobile >  Update constructor using method
Update constructor using method

Time:08-07

I have a game app and I want it to update the constructor strength value when I call the levelUp() method.

public Hero(String heroname, double strength, double strength_gain){
    this.heroname = heroname;
    this.hp = (int) (200 20*strength);
    this.strength_gain = strength_gain;
}

public void levelUp(){
    this.strength = strength   strength_gain;
}

But when i do System.out.println(hero.hp); after calling levelUp() it returns the first value.

CodePudding user response:

One way to always get an up-to-date value for a calculation that depends on other variables/inputs is to calculate it on demand (useful for simple calculations, such as the one you have).

EDIT: I realized that you might want to have an hp and a maxHp if your hero can actually lose/gain hp so I edited the example to take that into account.

public class Hero {
    // ...
    public int hp;

    public Hero(String heroname, double strength, double strength_gain){
        this.heroname = heroname;
        this.strength = strength; // <-- don't forget to save the initial strength as well
        this.strength_gain = strength_gain;
        this.hp = getMaxHp();
    }

    public int getMaxHp() {
        return (int) (200   20 * strength);
    }

    public void levelUp(){
        strength = strength   strength_gain;
        // decide if leveling up also heals your hero?
        hp = getMaxHp();
    }
    // ...
}

Elsewhere in code you can access both the .hp and the .getMaxHp().

System.out.println(hero.hp);
System.out.println(hero.getMaxHp());

If the calculations would be heavy, then using a boolean as a change flag and lazily recalculating only once per change and only when required would make more sense.

  • Related