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

Correction

parent 0a9dd374
No related branches found
No related tags found
No related merge requests found
Pipeline #41630 passed
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
...@@ -54,6 +54,13 @@ public class BoardFireFighterBehavior implements BoardBehavior{ ...@@ -54,6 +54,13 @@ public class BoardFireFighterBehavior implements BoardBehavior{
public static void extinguish(Position position) { public static void extinguish(Position position) {
fireMovements.getPositions().remove(position); fireMovements.getPositions().remove(position);
// Si la position est une montagne, elle cesse d'être une montagne
if (rocky.contains(position)) {
rocky.remove(position);
terrainMap.remove(position); // Optionnel, si vous utilisez terrainMap pour gérer les types de terrain
System.out.println("Une montagne a brûlé à la position : " + position);
}
} }
......
...@@ -25,38 +25,39 @@ public class FireFighterMovements implements Movements{ ...@@ -25,38 +25,39 @@ public class FireFighterMovements implements Movements{
List<Position> newFirefighterPositions = new ArrayList<>(); List<Position> newFirefighterPositions = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions) { for (Position firefighterPosition : firefighterPositions) {
// Trouver la position cible en excluant les montagnes et les positions non valides // Calcul de la position vers laquelle le pompier devrait se déplacer
Position newFirefighterPosition = getNeighbors().get(firefighterPosition).stream() Position newFirefighterPosition =getTargetStrategy().neighborClosestToTarget(firefighterPosition, fireMovements.getPositions(), getNeighbors());
.filter(pos -> !getRocky().contains(pos)) // Exclure montagnes
.filter(pos -> canMoveTo(pos, (Set<Position>) fireMovements.getPositions(), firefighterPositions)) // Valider mouvements // Vérification si la position cible est valide pour le mouvement
.findFirst() if (canMoveTo(newFirefighterPosition, (Set<Position>) fireMovements.getPositions(), firefighterPositions)) {
.orElse(firefighterPosition); // Reste sur place si aucun mouvement valide // Si le déplacement est valide, on met à jour la position du pompier
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);
// Éteindre les feux voisins accessibles // Vérification des voisins et extinction des feux voisins
List<Position> neighborFirePositions = getNeighbors().get(newFirefighterPosition).stream() List<Position> neighborFirePositions = getNeighbors().get(newFirefighterPosition).stream()
.filter(fireMovements.getPositions()::contains) .filter(fireMovements.getPositions()::contains).toList();
.filter(pos -> !getRocky().contains(pos))
.toList(); // Log pour débogage
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); modifiedPositions.add(firePosition); // Ajout des feux éteints dans la liste des positions modifiées
} }
} else { } else {
// Pompier reste sur place // Si la position n'est pas valide, le pompier reste sur place
newFirefighterPositions.add(firefighterPosition); newFirefighterPositions.add(firefighterPosition);
System.out.println("Pompier bloqué à " + firefighterPosition); System.out.println("Pompier ne peut pas se déplacer à " + newFirefighterPosition + ", il reste à " + firefighterPosition);
} }
} }
// Mise à jour des positions des pompiers // Mettre à jour la liste 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