public final void batalla() {
        int minimo;
        Soldat soldatMogut;
        ArrayList<Soldat> soldats = new ArrayList<Soldat>();
        while (exercits.get(0).getSoldats().size() != 0
              && exercits.get(1).getSoldats().size() != 0) {
            for (Exercit e : exercits) {
                for (Soldat s : e.getSoldats()) {
                    soldats.add(s);
                }
            }
            while (soldats.size() > 0) {
                soldatMogut = soldats.get(r.nextInt(soldats.size()));
                if (soldatMogut.moure(midaCamp) != 0) {
                    colisions(soldatMogut, soldats);
                } else {
                    soldatMogut.cambiarDireccio();
                    soldats.remove(soldatMogut);
                }
                lienzo.pause(TEMPSPAUSA);
            }
            // S'ha de comprobar si hem de baixar les files
            minimo = Math.min(exercits.get(0).getSoldats().size(),
                              exercits.get(1).getSoldats().size());
            if (minimo < FILESCAMP && minimo > 0) {
                filesCamp = minimo;
            }
            exercits.get(0).formacioInicial(filesCamp);
            exercits.get(1).formacioInicial(filesCamp);
        }
    }