import java.util.*;
public class ArteDaGuerra implements Estrategias{
      
    private int intencoesDeAtaque(ArrayList<Dwarf> listaDwarves, ArrayList<Elfo> elfosVivos){
        int intencoes = elfosVivos.size() * listaDwarves.size();
        return intencoes;
    }
    
    private int ataquesDeNoturnos(int intencoesDeAtaque){
        return (int)(intencoesDeAtaque * 0.3);
    }
    
    public ArrayList<Elfo> atacar (ArrayList<Dwarf> listaDwarves, ExercitoDeElfos exercito){
        exercito.agruparPorStatus();
        ArrayList<Elfo> elfosVivos = exercito.buscarPorStatus(Status.VIVO);
        int intencoes = intencoesDeAtaque(listaDwarves, elfosVivos);
        int elfosNoturnosQueAtacam = ataquesDeNoturnos(intencoes);
        int contadorAtaquesElfosNoturnos = 0;
        
        // Retorno do método
        ArrayList<Elfo> elfosQueAtacam = new ArrayList<Elfo>();
        elfosQueAtacam.add(new Elfo("Evitar NULL"));
       
        // Atacar dwarves
        for(int i = 0; i < elfosVivos.size(); i++){
            for(int j = 0; j < listaDwarves.size(); j++){
            if(elfosVivos.get(i) instanceof ElfosNoturnos){
                if(contadorAtaquesElfosNoturnos != elfosNoturnosQueAtacam){
                elfosVivos.get(i).atirarFlecha(listaDwarves.get(j));
                contadorAtaquesElfosNoturnos++;
                    if(!(elfosQueAtacam.get(i).equals(elfosVivos.get(i)))){
                        elfosQueAtacam.set(i, elfosVivos.get(i));
                        elfosQueAtacam.add(new Elfo("Evitar NULL"));
                    }
            }else{
            continue;
            }  
            }else if(!(elfosVivos.get(i) instanceof ElfosNoturnos)){
                elfosVivos.get(i).atirarFlecha(listaDwarves.get(j));
                if(!(elfosQueAtacam.get(i).equals(elfosVivos.get(i)))){
                        elfosQueAtacam.set(i, elfosVivos.get(i));
                        elfosQueAtacam.add(new Elfo("Evitar NULL"));
                }
            }
        }
    }
        elfosQueAtacam.remove(elfosQueAtacam.get(elfosQueAtacam.size() - 1));
        return elfosQueAtacam;
    }
       
}
 


@@ -872,32 +872,34 @@
 lfo%3E();%0A        
+//
 elfosQueAtacam.a
@@ -923,24 +923,24 @@
 ar NULL%22));%0A
-
        %0A    
@@ -1009,24 +1009,74 @@
 ze(); i++)%7B%0A
+            int dwarvesAtacadosPeloMesmoElfo = 0;%0A
             
@@ -1401,58 +1401,41 @@
  if(
-!(elfosQueAtacam.get(i).equals(elfosVivos.get(i)))
+dwarvesAtacadosPeloMesmoElfo == 0
 )%7B%0A 
@@ -1464,39 +1464,36 @@
  elfosQueAtacam.
-set(i, 
+add(
 elfosVivos.get(i
@@ -1524,51 +1524,38 @@
     
-elfosQueAtacam.add(new Elfo(%22Evitar NULL%22))
+dwarvesAtacadosPeloMesmoElfo++
 ;%0A  
@@ -1792,58 +1792,41 @@
  if(
-!(elfosQueAtacam.get(i).equals(elfosVivos.get(i)))
+dwarvesAtacadosPeloMesmoElfo == 0
 )%7B%0A 
@@ -1867,15 +1867,12 @@
 cam.
-set(i, 
+add(
 elfo
@@ -1915,51 +1915,38 @@
     
-elfosQueAtacam.add(new Elfo(%22Evitar NULL%22))
+dwarvesAtacadosPeloMesmoElfo++
 ;%0A  
@@ -1991,24 +1991,24 @@
 %7D%0A    %7D%0A
-
         
 elfosQue
@@ -1991,32 +1991,34 @@
 %7D%0A    %7D%0A        
+//
 elfosQueAtacam.r

alterar forma de tratamento dos dados no metodo atacar()