Skip to content
Snippets Groups Projects
Commit 0a9dd374 authored by AREZKI Celia's avatar AREZKI Celia
Browse files

Modify the methode reset

parent c2881041
No related branches found
No related tags found
No related merge requests found
Showing with 26 additions and 19 deletions
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
...@@ -87,6 +87,13 @@ public class BoardFireFighterBehavior implements BoardBehavior{ ...@@ -87,6 +87,13 @@ public class BoardFireFighterBehavior implements BoardBehavior{
@Override @Override
public void reset() { public void reset() {
this.step=0; this.step=0;
// Vider toutes les positions stockées
fireMovements.getPositions().clear();
fireFighterMovements.getPositions().clear();
cloudMovements.getPositions().clear();
motorizedMovements.getPositions().clear();
rocky.clear();
terrainMap.clear();
} }
...@@ -228,7 +235,7 @@ public class BoardFireFighterBehavior implements BoardBehavior{ ...@@ -228,7 +235,7 @@ public class BoardFireFighterBehavior implements BoardBehavior{
} }
public List<Position> getRocky() { public static List<Position> getRocky() {
return rocky; return rocky;
} }
...@@ -253,6 +260,7 @@ public class BoardFireFighterBehavior implements BoardBehavior{ ...@@ -253,6 +260,7 @@ public class BoardFireFighterBehavior implements BoardBehavior{
} }
public Collection<Position> getFirefighterPositions() { public Collection<Position> getFirefighterPositions() {
return fireFighterMovements.getPositions(); return fireFighterMovements.getPositions();
} }
......
...@@ -25,39 +25,38 @@ public class FireFighterMovements implements Movements{ ...@@ -25,39 +25,38 @@ public class FireFighterMovements implements Movements{
List<Position> newFirefighterPositions = new ArrayList<>(); List<Position> newFirefighterPositions = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions) { for (Position firefighterPosition : firefighterPositions) {
// Calcul de la position vers laquelle le pompier devrait se déplacer // Trouver la position cible en excluant les montagnes et les positions non valides
Position newFirefighterPosition =getTargetStrategy().neighborClosestToTarget(firefighterPosition, fireMovements.getPositions(), getNeighbors()); Position newFirefighterPosition = getNeighbors().get(firefighterPosition).stream()
.filter(pos -> !getRocky().contains(pos)) // Exclure montagnes
// Vérification si la position cible est valide pour le mouvement .filter(pos -> canMoveTo(pos, (Set<Position>) fireMovements.getPositions(), firefighterPositions)) // Valider mouvements
if (canMoveTo(newFirefighterPosition, (Set<Position>) fireMovements.getPositions(), firefighterPositions)) { .findFirst()
// Si le déplacement est valide, on met à jour la position du pompier .orElse(firefighterPosition); // Reste sur place si aucun mouvement valide
if (!newFirefighterPosition.equals(firefighterPosition)) {
// Déplacer et éteindre feu
newFirefighterPositions.add(newFirefighterPosition); newFirefighterPositions.add(newFirefighterPosition);
// Éteindre le feu à la nouvelle position
extinguish(newFirefighterPosition); extinguish(newFirefighterPosition);
modifiedPositions.add(firefighterPosition); modifiedPositions.add(firefighterPosition);
modifiedPositions.add(newFirefighterPosition); modifiedPositions.add(newFirefighterPosition);
// Vérification des voisins et extinction des feux voisins // Éteindre les feux voisins accessibles
List<Position> neighborFirePositions = getNeighbors().get(newFirefighterPosition).stream() List<Position> neighborFirePositions = getNeighbors().get(newFirefighterPosition).stream()
.filter(fireMovements.getPositions()::contains).toList(); .filter(fireMovements.getPositions()::contains)
.filter(pos -> !getRocky().contains(pos))
// Log pour débogage .toList();
System.out.println("Pompiers se déplacent de " + firefighterPosition + " vers " + newFirefighterPosition);
// Éteindre les feux voisins
for (Position firePosition : neighborFirePositions) { for (Position firePosition : neighborFirePositions) {
extinguish(firePosition); extinguish(firePosition);
modifiedPositions.add(firePosition); // Ajout des feux éteints dans la liste des positions modifiées modifiedPositions.add(firePosition);
} }
} else { } else {
// Si la position n'est pas valide, le pompier reste sur place // Pompier reste sur place
newFirefighterPositions.add(firefighterPosition); newFirefighterPositions.add(firefighterPosition);
System.out.println("Pompier ne peut pas se déplacer à " + newFirefighterPosition + ", il reste à " + firefighterPosition); System.out.println("Pompier bloqué à " + firefighterPosition);
} }
} }
// Mettre à jour la liste des positions des pompiers // Mise à jour des positions des pompiers
firefighterPositions = newFirefighterPositions; firefighterPositions = newFirefighterPositions;
return modifiedPositions; return modifiedPositions;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment