Все объекты в массиве должны быть затронуты в моем методе - PullRequest
0 голосов
/ 02 мая 2019

Я создаю игру про покемонов для школьного проекта, и мне трудно сделать так, чтобы каждый объект в моем массиве был затронут этим методом.Я хочу, чтобы все огненные персонажи получали двойной урон от водных атак.

Проблема в том, что метод attack работает только на одном character.

Я обнаружил, чтоможет быть затронут только 1 объект в массиве, но я хочу, чтобы он был общим для каждого отдельного объекта и символа, которые я делаю.

Мой массив


    ArrayList<Attacks> attacks;
    ArrayList<Characters> characters;

        attacks = new ArrayList<Attacks>();
        characters = new ArrayList<Characters>();

Мой класс атаки

//Stats--------------
    private int damage;
    private int accuracy;
    private int critChance;

    //Typ----------------------
     boolean fire;
     boolean water;

    public Attacks(int damage , int accuracy , int critChance , boolean fire , boolean water) {
        this.accuracy = accuracy;
        this.critChance = critChance;
        this.damage = damage;
        this.fire = fire;
        this.water = water;
    }
    public boolean isFire(){
        return fire;
    }
    public int getDamage(){
        return damage;
    }
    public boolean isWater(){
        return water;
    }
}

Мой класс персонажей

//Types
    private boolean fire;
    public int health;

    public Characters(int health, boolean fire) {
        this.health = health;
        this.fire = fire;
        }

    public boolean characterIsFire()
    {
        return fire;
    }

    public int getHealth() {
        return health;
    }
}

Мои конструкторы для моих объектов


        //Construktor for Characters--------------------

        final Characters fredrik = new Characters(1000 , false);
        characters.add(fredrik);
        final Characters jonte = new Characters(1000 , false);
        characters.add(jonte);

        //Construktor for attacker -------------------
        //Fredriks attacks
        final Attacks fireball = new Attacks(1 , 10 , 10 , false , true);
        attacks.add(fireball);
        final Attacks heatwave = new Attacks(1 , 0 , 10 , true , false);
        attacks.add(heatwave);

        //Jontes attacks
        final Attacks waterball = new Attacks(3 , 0, 4, false , true);
        attacks.add(waterball);

Мой метод, которым я хочу, чтобы все персонажи и атаки были затронуты.

    public int attacking(Attacks a) {
        int damage;
        Characters attacked = characters.get(//All the characters in the array);
        if (attacked.characterIsFire() && a.isWater())
        {
            damage = (a.getDamage() * 2);
        }
        else
        {
            damage = a.getDamage();
        }
        return damage;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...