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; }