Estoy creando un simulador de batalla. Tengo una clase de ataque y una clase de guerrero.


public class Attack {

    private String name;
    private int points;

    public Attack(String name, int points) {
        this.name= name;
        this.points =points;

    }

    //getters
    public String getName() {
        return name;
    }

    public int getPoints() {
        return points;
    }


    public String toString() {
        return ("Name of the attack = " + name + " damage = " + points) ;

    }

}

Dado que los guerreros tienen diferentes ataques, no puedo usar estática, ya que anulará el ataque anterior. Fragmento de la clase Monster:

        public Attack[] getAttacks() {
        return attacks;
    }
public void attack(String attackname, Warrior otherWarrior){
// How would I access the attack from the class?

}

¿Cómo podría acceder a los campos de ataque? Gracias.

0
user12263796 23 oct. 2019 a las 17:43

1 respuesta

La mejor respuesta

Así como puede acceder a los métodos de instancia de la clase this Monster, puede acceder a los métodos de instancia de su clase Warrior:

public class Monster {
    Attack[] attacks;
    // ...

    public Attack[] getAttacks(){
        return attacks;
    }

    public void attack(String attackname, Warrior otherWarrior){
        Attack[] monsterAttacks = this.getAttacks();

        // Assuming Warrior has the method `getAttacks()`
        Attack[] warriorAttacks = otherWarrior.getAttacks();

        // ...
    }
}

public class Warrior {
    Attack[] attacks;
    // ...

    public Attack[] getAttacks() {
        return attacks;
    }
}
0
xtratic 23 oct. 2019 a las 14:49