1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| public class Acceuil extends World{
public ArrayList<ArrayList> Bacterie = new ArrayList<ArrayList>(); // ne nomme pas tes variables avec un majuscule au début, on pourrait les prendre pour des classes
// accessoirement, nomme tes variables pour ce qu'elles sont. Ici, tu as une Liste de Liste de bacterie. Donc un Tableau de bateries.
// et pour éviter de caster de tous les côtés, tu peux le déclarer comme ça : public ArrayList<ArrayList<Bacterium>> mapBacteries = new ArrayList<ArrayList<Bacterium>>();
// autre chose dans tes déclarations de liste : essayes de déclarer les interfaces et pas les implémentations : public List<List<Bacterium>> mapBacteries = new ArrayList<List<Bacterium>>();
public ArrayList<Bacterium> RedBacterie = new ArrayList<Bacterium>(); // ici, il faudrait faire public List<Bacterium> listRedBacteries = new ArrayList<Bacterium>();
public ArrayList<Bacterium> BlueBacterie = new ArrayList<Bacterium>();
public ArrayList<Bacterium> GrayBacterie = new ArrayList<Bacterium>();
public ArrayList<Bacterium> OrangeBacterie = new ArrayList<Bacterium>();
public ArrayList<Bacterium> GreenBacterie = new ArrayList<Bacterium>();
public ArrayList<Bacterium> bacterie = new ArrayList<Bacterium>();
public Rectangle2D background = new Rectangle2D.Double(0, 0, Frame.panel.getScreenWidth(), Frame.panel.getScreenHeight());
public void Creation(){ // noms de méthodes avec la première lettre en minuscule !
Bacterie.add(RedBacterie);
Bacterie.add(BlueBacterie);
Bacterie.add(GrayBacterie);
Bacterie.add(OrangeBacterie);
Bacterie.add(GreenBacterie);
}
public void Display(){
Frame.panel.feuille.fill(background);
Bacterium x;; // un ; à enlever ici, et il faudrait nommer ta variable en fonction de son usage !
bacterie = Bacterie.get(0);
Iterator<Bacterium> it = bacterie.iterator();
while(it.hasNext()){
x = it.next();
((Bacterium) Bacterie.get(0).get(bacterie.indexOf(x))).Move(); // Que fait la méthode Move?
if(x.Reprod() && x.Speed != 0 && Bacterie.get(0).size() < 1000){
Bacterie.get(0).add(new Bacterium(x.posX+2, x.posY+2, x.color)); // ERREUR ici. Bacterie.get(0) fait référence à la même instance de liste que l'iterateur sur lequel tu travailles --> donc ça va planter ! On ne peut pas ajouter d'éléments dans une liste quand on la parcours avec un iterateur.
((Bacterium) Bacterie.get(0).get(bacterie.size()-1)).Creation();
}
if(x.Death()){ ((Bacterium) Bacterie.get(0).get(bacterie.indexOf(x))).Speed = 0; }
((Bacterium) Bacterie.get(0).get(bacterie.indexOf(x))).Display();//garder cette ligne avant remove
if(x.Final()){ Bacterie.get(0).remove(bacterie.indexOf(x)); } // ERREUR ici : pour supprimer un élément avec un iterateur, il faut utiliser la méthode remove()
} |