diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin
index 6741c512681214aa04e5d1d9d09f278133be9b06..e54cf45c2a81c46f3da5bba2ce382f3aa65d7197 100644
Binary files a/.gradle/8.10.2/executionHistory/executionHistory.bin and b/.gradle/8.10.2/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.10.2/executionHistory/executionHistory.lock b/.gradle/8.10.2/executionHistory/executionHistory.lock
index 5e253391d2b44a77de6450314cd2f8a3eee59b67..2e20131c08b5e00ca0efc3f288568ff13eba939d 100644
Binary files a/.gradle/8.10.2/executionHistory/executionHistory.lock and b/.gradle/8.10.2/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.10.2/fileHashes/fileHashes.bin b/.gradle/8.10.2/fileHashes/fileHashes.bin
index de4bee79ebbde603ea446bd1acc2538579b0c04e..245e14138f7ab7cc7b0d64fc506744612c339ef3 100644
Binary files a/.gradle/8.10.2/fileHashes/fileHashes.bin and b/.gradle/8.10.2/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.10.2/fileHashes/fileHashes.lock b/.gradle/8.10.2/fileHashes/fileHashes.lock
index d337261118968ae302abf502a379b81ce3042e70..59c76d3da0fbaba3be498d2fc4dd5a161317e9a2 100644
Binary files a/.gradle/8.10.2/fileHashes/fileHashes.lock and b/.gradle/8.10.2/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin
index 8b7596b93d5b785bbd5c8577381965c0cef54afd..34d9a297c5342af347b6757e0b6c7e7b2b507020 100644
Binary files a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin and b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 513e4c3656a446659afbd58d041574dc7193a9d8..836c670f35bd46c99bcad5b2783dc79c9cf61fad 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/build/classes/java/main/model/BoardFireFighterBehavior.class b/build/classes/java/main/model/BoardFireFighterBehavior.class
index 73c96608eed963e1df5de92bd48d2cc6f8272565..73035e5aa50a24d4a325bca8cd9ed33148697c76 100644
Binary files a/build/classes/java/main/model/BoardFireFighterBehavior.class and b/build/classes/java/main/model/BoardFireFighterBehavior.class differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 65a9666d853a2108b980d9edbe3acfdea3864d6f..61c84f5db84df19f0c69718127709f4ff377b8e0 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/src/main/java/model/BoardFireFighterBehavior.java b/src/main/java/model/BoardFireFighterBehavior.java
index 3e1d9f2303042b4e1448fa3df2ae6b1d45cae7be..6fb36d03199880a29aa7274885107820c04ad6a1 100644
--- a/src/main/java/model/BoardFireFighterBehavior.java
+++ b/src/main/java/model/BoardFireFighterBehavior.java
@@ -54,6 +54,13 @@ public class BoardFireFighterBehavior implements BoardBehavior{
 
     public static void extinguish(Position 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);
+        }
     }
 
 
diff --git a/src/main/java/model/FireFighterMovements.java b/src/main/java/model/FireFighterMovements.java
index 28278301c19db6722f8eed89a728b36e8f549b2c..6e1ded828c1572cde2a440e92f50659bd8e0412f 100644
--- a/src/main/java/model/FireFighterMovements.java
+++ b/src/main/java/model/FireFighterMovements.java
@@ -25,38 +25,39 @@ public class FireFighterMovements implements Movements{
         List<Position> newFirefighterPositions = new ArrayList<>();
 
         for (Position firefighterPosition : firefighterPositions) {
-            // Trouver la position cible en excluant les montagnes et les positions non valides
-            Position newFirefighterPosition = getNeighbors().get(firefighterPosition).stream()
-                    .filter(pos -> !getRocky().contains(pos)) // Exclure montagnes
-                    .filter(pos -> canMoveTo(pos, (Set<Position>) fireMovements.getPositions(), firefighterPositions)) // Valider mouvements
-                    .findFirst()
-                    .orElse(firefighterPosition); // Reste sur place si aucun mouvement valide
-
-            if (!newFirefighterPosition.equals(firefighterPosition)) {
-                // Déplacer et éteindre feu
+            // Calcul de la position vers laquelle le pompier devrait se déplacer
+            Position newFirefighterPosition =getTargetStrategy().neighborClosestToTarget(firefighterPosition, fireMovements.getPositions(), getNeighbors());
+
+            // Vérification si la position cible est valide pour le mouvement
+            if (canMoveTo(newFirefighterPosition, (Set<Position>) fireMovements.getPositions(), firefighterPositions)) {
+                // Si le déplacement est valide, on met à jour la position du pompier
                 newFirefighterPositions.add(newFirefighterPosition);
+
+                // Éteindre le feu à la nouvelle position
                 extinguish(newFirefighterPosition);
                 modifiedPositions.add(firefighterPosition);
                 modifiedPositions.add(newFirefighterPosition);
 
-                // Éteindre les feux voisins accessibles
+                // Vérification des voisins et extinction des feux voisins
                 List<Position> neighborFirePositions = getNeighbors().get(newFirefighterPosition).stream()
-                        .filter(fireMovements.getPositions()::contains)
-                        .filter(pos -> !getRocky().contains(pos))
-                        .toList();
+                        .filter(fireMovements.getPositions()::contains).toList();
+
+                // Log pour débogage
+                System.out.println("Pompiers se déplacent de " + firefighterPosition + " vers " + newFirefighterPosition);
 
+                // Éteindre les feux voisins
                 for (Position firePosition : neighborFirePositions) {
                     extinguish(firePosition);
-                    modifiedPositions.add(firePosition);
+                    modifiedPositions.add(firePosition);  // Ajout des feux éteints dans la liste des positions modifiées
                 }
             } else {
-                // Pompier reste sur place
+                // Si la position n'est pas valide, le pompier reste sur place
                 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;
         return modifiedPositions;
     }