diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin index e54cf45c2a81c46f3da5bba2ce382f3aa65d7197..258dac4ebb4688af1595b78935cac62b354c5f44 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 2e20131c08b5e00ca0efc3f288568ff13eba939d..4183dedaae5296d826df03e9deec85e1598a610b 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 245e14138f7ab7cc7b0d64fc506744612c339ef3..85a7f8f9d153d181a070bf19d7ed561221db400e 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 59c76d3da0fbaba3be498d2fc4dd5a161317e9a2..88ad37ae3bc8ad3ce89f4d66df6309eb6bd2583f 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 34d9a297c5342af347b6757e0b6c7e7b2b507020..42c05b4bab676628bd5ab004bcfbf2c0323d1145 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 836c670f35bd46c99bcad5b2783dc79c9cf61fad..faa428ff1d91794eee99a8fa0404b0c22b3d5d17 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/classes/java/main/app/SimulatorApplication.class b/build/classes/java/main/app/SimulatorApplication.class index 74b875251a0cde725bd7e353d53f8ef10d36b6c1..8c667bcd48cc45a2d2c6b4306ef0f234f61bce68 100644 Binary files a/build/classes/java/main/app/SimulatorApplication.class and b/build/classes/java/main/app/SimulatorApplication.class differ diff --git a/build/classes/java/main/app/SimulatorMain.class b/build/classes/java/main/app/SimulatorMain.class index 4530cc2971636d0c78bcf91139a4f699c2f20eb4..1d13229f73ef27c233a432bc89aa3dffc086246a 100644 Binary files a/build/classes/java/main/app/SimulatorMain.class and b/build/classes/java/main/app/SimulatorMain.class differ diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class index 9eb1bc490d02495ed5a13b135b23e4e02aa9327b..3a34ffe9c7dbb5b1aa846a298857f775cab236f9 100644 Binary files a/build/classes/java/main/controller/Controller.class and b/build/classes/java/main/controller/Controller.class differ diff --git a/build/classes/java/main/controller/PersistentToggleGroup.class b/build/classes/java/main/controller/PersistentToggleGroup.class index 5ccef4da42dee9301d32078f998d43094c421149..314954a9fd4ab6d48da5fec7067063879e670d62 100644 Binary files a/build/classes/java/main/controller/PersistentToggleGroup.class and b/build/classes/java/main/controller/PersistentToggleGroup.class differ diff --git a/build/classes/java/main/model/Board.class b/build/classes/java/main/model/Board.class index d2b9e0a8bf6b498a7e1e1cc7f100b7949948329e..38636074a072f0e4ce3549152ba24a266261d8c3 100644 Binary files a/build/classes/java/main/model/Board.class and b/build/classes/java/main/model/Board.class differ diff --git a/build/classes/java/main/model/BoardBehavior.class b/build/classes/java/main/model/BoardBehavior.class index a535dd85cfda4a470deba0064e805fc2465a72a1..056f9a3c8591df18076ad64c8d030b1ebbf2682b 100644 Binary files a/build/classes/java/main/model/BoardBehavior.class and b/build/classes/java/main/model/BoardBehavior.class differ diff --git a/build/classes/java/main/model/BoardElement.class b/build/classes/java/main/model/BoardElement.class index f13c75608e22866d9214df4c37452027e16e2464..90b50bc72887ccf13f50734ad591ce2a7ac47430 100644 Binary files a/build/classes/java/main/model/BoardElement.class and b/build/classes/java/main/model/BoardElement.class differ diff --git a/build/classes/java/main/model/BoardFireFighterBehavior.class b/build/classes/java/main/model/BoardFireFighterBehavior.class index 73035e5aa50a24d4a325bca8cd9ed33148697c76..cc5d3fe274ea94156143b99a0e3978ab018d05d0 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/BoardFirefighterProperties.class b/build/classes/java/main/model/BoardFirefighterProperties.class index 3722f9e6332e6c930d36ee30fdf5089878b86ddb..a094b5badf9a5c8b929c25141e712d65a3445892 100644 Binary files a/build/classes/java/main/model/BoardFirefighterProperties.class and b/build/classes/java/main/model/BoardFirefighterProperties.class differ diff --git a/build/classes/java/main/model/BoardProperties.class b/build/classes/java/main/model/BoardProperties.class index 309b5e5207e85358e6ec9d55b56a577637ab5cc7..93736154cb1db5f0fd6077cdc429a64c015a59c3 100644 Binary files a/build/classes/java/main/model/BoardProperties.class and b/build/classes/java/main/model/BoardProperties.class differ diff --git a/build/classes/java/main/model/ElementFactory.class b/build/classes/java/main/model/ElementFactory.class index 5cf37726c12ba4bade2aaee9d5b2049d9e3e26fb..fc2bd74472da9eb0ad654c8764a26baf67bdf15d 100644 Binary files a/build/classes/java/main/model/ElementFactory.class and b/build/classes/java/main/model/ElementFactory.class differ diff --git a/build/classes/java/main/model/Fire.class b/build/classes/java/main/model/Fire.class index 24888cdc22f4bb980bc840cc2062512750ff19c7..12744497c0b4168a756584b31df839866c40bdf5 100644 Binary files a/build/classes/java/main/model/Fire.class and b/build/classes/java/main/model/Fire.class differ diff --git a/build/classes/java/main/model/FireFactory.class b/build/classes/java/main/model/FireFactory.class index cd2de694304566ad83e53b02f3ca95060dfe94dc..2f20734f25cb06826f8e78ac0d44c6d1014be12f 100644 Binary files a/build/classes/java/main/model/FireFactory.class and b/build/classes/java/main/model/FireFactory.class differ diff --git a/build/classes/java/main/model/FireFighter.class b/build/classes/java/main/model/FireFighter.class index 95da58b3d52ea957c4742b40524e4699481a927b..6a9fddbd22bf77ca244173120fa183fe11a127e6 100644 Binary files a/build/classes/java/main/model/FireFighter.class and b/build/classes/java/main/model/FireFighter.class differ diff --git a/build/classes/java/main/model/FirefighterBoard.class b/build/classes/java/main/model/FirefighterBoard.class index cf49fef0abe2cff1c5452936058ed02f3d28d7db..ebf0c3e8c4205ef081bcca66d853272df961b674 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/classes/java/main/model/FirefighterFactory.class b/build/classes/java/main/model/FirefighterFactory.class index e4dc8d8797f5941c778c89aee12d50fbbc53ec23..920e538c1bdada9fae8840e28871963a6761dd61 100644 Binary files a/build/classes/java/main/model/FirefighterFactory.class and b/build/classes/java/main/model/FirefighterFactory.class differ diff --git a/build/classes/java/main/model/ModelElement.class b/build/classes/java/main/model/ModelElement.class index 55c5477e85b71491e999808b143e4a9a6f246f78..155b653963166f37418e8bdaf6c396a855faacdd 100644 Binary files a/build/classes/java/main/model/ModelElement.class and b/build/classes/java/main/model/ModelElement.class differ diff --git a/build/classes/java/main/model/PositionGenerator.class b/build/classes/java/main/model/PositionGenerator.class index 556d364eed0180aa5daa8c56c559f0484d08c6e4..348edab54a85a9a8685f4479d5078d39bbe4928a 100644 Binary files a/build/classes/java/main/model/PositionGenerator.class and b/build/classes/java/main/model/PositionGenerator.class differ diff --git a/build/classes/java/main/module-info.class b/build/classes/java/main/module-info.class index 7a769b70875d147512dd0dc3f725d1c113981548..a05e120336680c15a80138be7c30617ca4e5473c 100644 Binary files a/build/classes/java/main/module-info.class and b/build/classes/java/main/module-info.class differ diff --git a/build/classes/java/main/util/Position.class b/build/classes/java/main/util/Position.class index 8e859130f0037dab2e4ebfc7d976894f8abe38ab..949d5a4547ec8c6b8f739aa883d42043f82a62ed 100644 Binary files a/build/classes/java/main/util/Position.class and b/build/classes/java/main/util/Position.class differ diff --git a/build/classes/java/main/util/Strategy.class b/build/classes/java/main/util/Strategy.class index 970de74442843b7dd05680aa1b504198ab066d92..eb66209f3dd056875eca5fc68f693422131591f0 100644 Binary files a/build/classes/java/main/util/Strategy.class and b/build/classes/java/main/util/Strategy.class differ diff --git a/build/classes/java/main/util/TargetStrategy.class b/build/classes/java/main/util/TargetStrategy.class index 21d04fa47c792c7b5afe2ceb0fdffa4470135de2..615d840c8b938f886069802d4128013485ef851c 100644 Binary files a/build/classes/java/main/util/TargetStrategy.class and b/build/classes/java/main/util/TargetStrategy.class differ diff --git a/build/classes/java/main/view/FirefighterGrid.class b/build/classes/java/main/view/FirefighterGrid.class index 2343d40902ddbfc3d1c8003c494c10d520884c6c..831699ca3ca58a17f7b79bad1d1464aeb6d30a4c 100644 Binary files a/build/classes/java/main/view/FirefighterGrid.class and b/build/classes/java/main/view/FirefighterGrid.class differ diff --git a/build/classes/java/main/view/Grid.class b/build/classes/java/main/view/Grid.class index 3d42b97050079349780725b186452a4ef88502d2..c4fa5e96b46909e2a89e512f2ad9c2d4d042260c 100644 Binary files a/build/classes/java/main/view/Grid.class and b/build/classes/java/main/view/Grid.class differ diff --git a/build/classes/java/main/view/ViewElement.class b/build/classes/java/main/view/ViewElement.class index c05e30406fdf683dec6eff659e3688f0078e4faf..86a80df8170c6a9d79066186cd5255f7bbbbe0c8 100644 Binary files a/build/classes/java/main/view/ViewElement.class and b/build/classes/java/main/view/ViewElement.class differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 61c84f5db84df19f0c69718127709f4ff377b8e0..e96d759e4acbb4033422ca03cceed662e81e8123 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 6fb36d03199880a29aa7274885107820c04ad6a1..0cbbaf91b1f847f4c2e1e7cd5eabca5c5634c82c 100644 --- a/src/main/java/model/BoardFireFighterBehavior.java +++ b/src/main/java/model/BoardFireFighterBehavior.java @@ -202,44 +202,56 @@ public class BoardFireFighterBehavior implements BoardBehavior{ } private void generateRoads(int rowCount, int columnCount) { Random random = new Random(); - int maxRoads = 3; // Par exemple, générer 3 routes - int roadLength = 5; // Longueur de chaque route (5 cases) - for (int i = 0; i < maxRoads; i++) { - int startRow = random.nextInt(rowCount); // L'index de départ de la route - int startCol = random.nextInt(columnCount); + // Définir les bords de départ et d'arrivée + int startRow = random.nextInt(rowCount); // Bord gauche + int endRow = random.nextInt(rowCount); // Bord droit + int startCol = 0; // Bord gauche (colonne 0) + int endCol = columnCount - 1; // Bord droit (dernière colonne) - // Créer une route uniquement si la position est valide - if (canPlaceRoad(startRow, startCol, roadLength,columnCount)) { - placeRoad(startRow, startCol, roadLength); + // Générer une route connectant ces deux points + List<Position> path = createPath(new Position(startRow, startCol), new Position(endRow, endCol)); + + // Placer la route dans la grille + for (Position pos : path) { + if (!terrainMap.containsKey(pos)) { // Éviter les obstacles + terrainMap.put(pos, new Road(pos)); } } } - private boolean canPlaceRoad(int startRow, int startCol, int roadLength,int columnCount) { - // Vérifier si la ligne droite de la route peut être placée sans dépasser les bords - if (startCol + roadLength > columnCount) { // Vérifie si la route dépasse la largeur de la grille - return false; - } + /** + * Génère un chemin connectant deux positions. + */ + private List<Position> createPath(Position start, Position end) { + List<Position> path = new ArrayList<>(); + int currentRow = start.row(); + int currentCol = start.column(); + + // Algorithme simple de connexion entre les points (chemin en "zigzag") + while (currentRow != end.row() || currentCol != end.column()) { + path.add(new Position(currentRow, currentCol)); + + // Mouvement vertical + if (currentRow < end.row()) { + currentRow++; + } else if (currentRow > end.row()) { + currentRow--; + } - // Vérifier que toutes les cases sont libres avant de placer la route - for (int i = 0; i < roadLength; i++) { - Position pos = new Position(startRow, startCol + i); - if (terrainMap.containsKey(pos)) { - return false; // Une case est déjà occupée + // Mouvement horizontal + if (currentCol < end.column()) { + currentCol++; + } else if (currentCol > end.column()) { + currentCol--; } } - return true; + // Ajouter la position finale + path.add(end); + return path; } - private void placeRoad(int startRow, int startCol, int roadLength) { - // Placer une route (ligne droite) sur la grille - for (int i = 0; i < roadLength; i++) { - Position pos = new Position(startRow, startCol + i); - terrainMap.put(pos, new Road(pos)); // Placer une route à chaque case - } - } public static List<Position> getRocky() { @@ -254,21 +266,13 @@ public class BoardFireFighterBehavior implements BoardBehavior{ return neighbors; } - public static Movements getFireMovements() { - return fireMovements; - } public static TargetStrategy getTargetStrategy() { return targetStrategy; } - public static Movements getFireFighterMovements() { - return fireFighterMovements; - } - - - public Collection<Position> getFirefighterPositions() { + public static Collection<Position> getFirefighterPositions() { return fireFighterMovements.getPositions(); } } diff --git a/src/main/java/model/ElementGenerator.java b/src/main/java/model/ElementGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..040c95ba935a0c2d216e83d7e1526a922b2e1c3d --- /dev/null +++ b/src/main/java/model/ElementGenerator.java @@ -0,0 +1,5 @@ +package model; + +public interface ElementGenerator { + public void generateElement(int rowCount, int columnCount); +} diff --git a/src/main/java/model/FireMovements.java b/src/main/java/model/FireMovements.java index da96795989f2ed8e45366c8f8249bd3dc36c7211..9e4afd72fee788d196a2efc081d46a25546d3291 100644 --- a/src/main/java/model/FireMovements.java +++ b/src/main/java/model/FireMovements.java @@ -47,7 +47,7 @@ public class FireMovements implements Movements{ // Si la position voisine est libre (non occupée par un feu ou un pompier), le feu peut se propager for (Position neighbor : getNeighbors().get(fire)) { // Vérifier si le feu peut se propager à cette position (pas de feu déjà là et pas un terrain bloqué) - if (canMoveTo(neighbor, firePositions, (List<Position>) getFireFighterMovements().getPositions()) && !firePositions.contains(neighbor)) { + if (canMoveTo(neighbor, firePositions, (List<Position>)getFirefighterPositions()) && !firePositions.contains(neighbor)) { newFirePositions.add(neighbor); } } diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index 88e8b7dc5520c8caafa5126c4408860186c032f9..cf8e4e0631f8cf29a6c92ba9d77fa11de177166b 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -53,7 +53,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { .forEach(pos -> result.add(new Fire(pos))); // Créer un objet Fire à partir de Position // Filtrage des éléments Firefighter (en transformant les positions en objets FireFighter) - behavior.getFireFighterMovements().getPositions().stream() + behavior.getFirefighterPositions().stream() .filter(pos -> pos.isAtPosition(position)) // Vérifier si la position correspond .forEach(pos -> result.add(new FireFighter(pos))); // Créer un objet Firefighter à partir de Position // Filtrage des éléments Cloud diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java index 065b1a2e8fc2b380a06924d0251acbf48590e026..642af23a3bfdcd08623f9ed95283535c8c342880 100644 --- a/src/main/java/view/ViewElement.java +++ b/src/main/java/view/ViewElement.java @@ -3,8 +3,8 @@ package view; import javafx.scene.paint.Color; public enum ViewElement { - FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE) , CLOUD(Color.GRAY),MOTORIZED(Color.BLACK) , MOUNTAIN(Color.GREEN), ROCKY(Color.BISQUE), - ROAD(Color.BROWN); + FIREFIGHTER(Color.AQUA), FIRE(Color.RED), EMPTY(Color.WHITE) , CLOUD(Color.GRAY),MOTORIZED(Color.DARKBLUE) , MOUNTAIN(Color.DARKGRAY), ROCKY(Color.GREEN), + ROAD(Color.BLACK); final Color color; ViewElement(Color color) { this.color = color;