Valeurs de deux ArrayList
Bonsoir,
Je suis en train d'essayer de comprendre un morceau de code suite à avoir suivi un tutoriel pour créer un sokoban en 2D.
Mais je bloque sur un test... :oops:
Le principe est simple un cristal doit toucher un objectif pour qu'il passe en "objectif atteint".
J'ai donc une ArrayList d'Obectifs et une ArrayList de Crystaux, au chargement de la map elles s'initialisent correctement mais malheureusement je bloque sur un test qui concerne les collisions.
Voici mon code qui gère les collisions entre le cristal et l'objectif :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| for (int i = 0; i < Objectifs.size(); i++){
objectif = Objectifs.get(i);
Rectangle objectifRec = objectif.getBounds();
for (int j = 0; j < Crystaux.size(); j++){
crystal = Crystaux.get(i);
Rectangle crystalRec = crystal.getBounds();
// Si le rectangle de crystal intersecte le rectangle de objectif
if (crystalRec.intersects(objectifRec) && !crystal.getJuste() && !objectif.getDessus()){
crystal.setEtat("OBJECTIF");
crystal.setJuste(true);
objectif.setDessus(true);
}
// Si on enlève un crystal d'un objectif il redevient à l'état normal
else if (!crystalRec.intersects(objectifRec) && crystal.getJuste() && objectif.getDessus()){
crystal.setEtat("NORMAL");
crystal.setJuste(false);
objectif.setDessus(false);
}
}
} |
Avec ce code, je test bien si un cristal entre en collision avec un objectif mais seulement sur 1 objectif.
C'est à dire que j'aimerais que le cristal puisse aller sur tout les objectifs et non seulement celui de i.
Un petit exemple : J'ai 3 cristaux et 3 objectifs, mon premier cristal ne peut pas être posé sur tout les objectifs mais seulement sur 1 seul. Idem pour les autres.
Je ne vois pas du tout comment tester si un cristal de son ArrayList rencontre un objectif de l'ArrayList Objectifs. :?
Je ne sais pas si cela est très clair, je cherche une piste comment tester les éléments des 2 ArrayList entre eux et non seulement 1 à 1.
En espérant avoir choisi la bonne section, je pense que c'est plus un problème d'analyse qu'autre chose.
Merci d'avance de votre aide.