diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin index 1b04c929a7e6e8270dc77696abc06ecd9c56b77b..6741c512681214aa04e5d1d9d09f278133be9b06 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 e20f18574181d8ff09e42dcf6caccef815f53ed2..5e253391d2b44a77de6450314cd2f8a3eee59b67 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 2b94c4ed959cc5773e8663685b0edf2ea4a98210..de4bee79ebbde603ea446bd1acc2538579b0c04e 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 3f9302b190923d39bb00d07a94bc8a04cebe5f6b..d337261118968ae302abf502a379b81ce3042e70 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 ca9f79172a257f13e1e007f6b1634f3278e887f2..8b7596b93d5b785bbd5c8577381965c0cef54afd 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 287af6e1ca757eb1c80330e74e2596b23a3cb115..513e4c3656a446659afbd58d041574dc7193a9d8 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 23937ecfb9fbe992d4ceb5471b0891d8bb9947ec..73c96608eed963e1df5de92bd48d2cc6f8272565 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/classes/java/main/model/FirefighterBoard.class b/build/classes/java/main/model/FirefighterBoard.class index e5546abb657938877a328311e38a6f60e909c7e5..cf49fef0abe2cff1c5452936058ed02f3d28d7db 100644 Binary files a/build/classes/java/main/model/FirefighterBoard.class and b/build/classes/java/main/model/FirefighterBoard.class differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 02f840310ffeae8d39057f746b3f0d133500205b..65a9666d853a2108b980d9edbe3acfdea3864d6f 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 53c01c6bcfe53673b99649da36049922bb7404c7..3e1d9f2303042b4e1448fa3df2ae6b1d45cae7be 100644 --- a/src/main/java/model/BoardFireFighterBehavior.java +++ b/src/main/java/model/BoardFireFighterBehavior.java @@ -87,6 +87,13 @@ public class BoardFireFighterBehavior implements BoardBehavior{ @Override public void reset() { 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{ } - public List<Position> getRocky() { + public static List<Position> getRocky() { return rocky; } @@ -253,6 +260,7 @@ public class BoardFireFighterBehavior implements BoardBehavior{ } + public Collection<Position> getFirefighterPositions() { return fireFighterMovements.getPositions(); } diff --git a/src/main/java/model/FireFighterMovements.java b/src/main/java/model/FireFighterMovements.java index 6e1ded828c1572cde2a440e92f50659bd8e0412f..28278301c19db6722f8eed89a728b36e8f549b2c 100644 --- a/src/main/java/model/FireFighterMovements.java +++ b/src/main/java/model/FireFighterMovements.java @@ -25,39 +25,38 @@ public class FireFighterMovements implements Movements{ List<Position> newFirefighterPositions = new ArrayList<>(); for (Position firefighterPosition : firefighterPositions) { - // 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 + // 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 newFirefighterPositions.add(newFirefighterPosition); - - // Éteindre le feu à la nouvelle position extinguish(newFirefighterPosition); modifiedPositions.add(firefighterPosition); modifiedPositions.add(newFirefighterPosition); - // Vérification des voisins et extinction des feux voisins + // Éteindre les feux voisins accessibles List<Position> neighborFirePositions = getNeighbors().get(newFirefighterPosition).stream() - .filter(fireMovements.getPositions()::contains).toList(); - - // Log pour débogage - System.out.println("Pompiers se déplacent de " + firefighterPosition + " vers " + newFirefighterPosition); + .filter(fireMovements.getPositions()::contains) + .filter(pos -> !getRocky().contains(pos)) + .toList(); - // Éteindre les feux voisins for (Position firePosition : neighborFirePositions) { extinguish(firePosition); - modifiedPositions.add(firePosition); // Ajout des feux éteints dans la liste des positions modifiées + modifiedPositions.add(firePosition); } } else { - // Si la position n'est pas valide, le pompier reste sur place + // Pompier reste sur place 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; return modifiedPositions; }