0

私は次のように機能するメソッド攻撃を実装したいと考えています: 私の部隊のすべての戦士は、別の部隊からランダムに選択された戦士を攻撃します。攻撃された戦士が死亡した場合、それは部隊から取り除かれなければなりません。私が試した方法では、乱数のエラーが発生します:

 java.lang.IllegalArgumentException: n must be positive

部隊はリスト<Creature>の戦士です。そうしないとエラーが発生しないはずなので、削除を正しく行っていないと思います。

public void atac(Troop opponentTroop){
        for(Creature f : warriors){
            Creature c = getOpponent(opponentTroop);
            f.atac(c);
            ListIterator<Creature> iterator = opponentTroop.warriors.listIterator();
            while(iterator.hasNext()){
                c = iterator.next();
                if(c.isDead()){
                    iterator.remove();                  
                }
            }   

        }       
    }


private Creature getOpponent(Troop opponent){
        int x = rand.getRandomArrayIndex(opponent.warriors.size());
        return opponent.warriors.get(x);
}
4

1 に答える 1