diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin index a8f96d75e06c648f54523535192c0778b5ebbf13..fbbec4bc8173cedc3afbb4b7ab14acb0997cbb50 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 82c86cabe8e28e7e1cc8922b1aa181f7d4a721aa..98093e015bf73252d37edf85423197b5ea764caa 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 8477a2464b3725af3e04b824f9c1264a39c25f8e..ba6fa9175ae3eaaad41652ce0faab1d37466bfcf 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 3b9fab559fcbf131fd719c12b0635ce3bb71ef8a..6a4ef9dcc1250cfe5c5414c2a5ada998cf6bca97 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 c8f08e9807b5c74a3c7192f0c0b45de7f17b08b8..e6c74ff88440a2ff33bb4e0843527d65ea3ab492 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 59300afb8dff4a66b15052eed24bbf756b523406..4f01d48e5400a253886033ccfa8fd4dacb0c21af 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class index f9f16e239ccd20b1d1fa268b802f40f47bf13cf3..de853c12783d647992fcf4e7ca958c1a6377670b 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/model/BoardFireFighterBehavior.class b/build/classes/java/main/model/BoardFireFighterBehavior.class index bc326b5aa19727898f4ac7f353a0696dbd3ae8df..9151be9a956136fe5fe3a0fd07783409fd570deb 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 77ae15b80a2fa9f3695271d7938e3cd301cd1031..1705f8be13c2665ff1c36c425c8182c0e8943fe3 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/view/ViewElement.class b/build/classes/java/main/view/ViewElement.class index c6622dc9bfccb1bfb8c231f1126d891a26fca602..bb1c39d028cb3e62caebe67d080cf68269b12ae6 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 a722c5845a8b0a1dd2e4f036f32407b625b41c76..0fdd7c3d56d8dacd1766eb2295a3b168273368b0 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/controller/Controller.java b/src/main/java/controller/Controller.java index 8b5c08dc89684de174a1bd32d7851e432430a13c..c306d799ca76c731d7415dd67bfec1969e1cd756 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -97,6 +97,10 @@ public class Controller { { return ViewElement.MOUNTAIN; } + if (element instanceof Road) + { + return ViewElement.ROAD; + } } return ViewElement.EMPTY; diff --git a/src/main/java/model/BoardFireFighterBehavior.java b/src/main/java/model/BoardFireFighterBehavior.java index f1a4ad96655ce8cf7fa9e5fc3656b11f394b0de3..5daf21cf6daf7f26d2cbbc44b13b89e5cf803de1 100644 --- a/src/main/java/model/BoardFireFighterBehavior.java +++ b/src/main/java/model/BoardFireFighterBehavior.java @@ -57,6 +57,7 @@ public class BoardFireFighterBehavior implements BoardBehavior{ motorizedFighters.add(motorizedFirefighter.getPosition()); } generateMountainBlocks(rowCount, columnCount); + generateRoads(rowCount,columnCount); } @@ -332,6 +333,47 @@ public class BoardFireFighterBehavior implements BoardBehavior{ return true; // La position est traversable } + 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); + + // Créer une route uniquement si la position est valide + if (canPlaceRoad(startRow, startCol, roadLength,columnCount)) { + placeRoad(startRow, startCol, roadLength); + } + } + } + + 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; + } + + // 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 + } + } + + return true; + } + + 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 + } + } + diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index 43a164ec19d71b6238f82c832fa251b264760e42..887afb218a5f7c5097f98cefbcf9daa688a624cb 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -69,6 +69,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> { result.add((Mountain) value); // Ajouter uniquement un objet Mountain } }); + behavior.getTerrainMap().forEach((pos, value) -> { + if (pos.isAtPosition(position) && value instanceof Road) { + result.add((Road) value); // Ajouter uniquement un objet Mountain + } + }); return result; } diff --git a/src/main/java/model/Mountain.java b/src/main/java/model/Mountain.java index 913da87cd4c3e9f6d2bb35f0db52a4f4a12f0316..4abca344ba224accebc1d398c234f69b13acdc62 100644 --- a/src/main/java/model/Mountain.java +++ b/src/main/java/model/Mountain.java @@ -17,13 +17,13 @@ public class Mountain extends BoardElement implements Terrain { public String toString() { return null; } - - public static boolean isTraversableByFire() { + @Override + public boolean isTraversableByFire() { return false; // Les montagnes ne sont pas franchissables par le feu } - - public static boolean isTraversableByFirefighter() { + @Override + public boolean isTraversableByFirefighter() { return false; // Les pompiers ne peuvent pas passer non plus } } diff --git a/src/main/java/model/Road.java b/src/main/java/model/Road.java index 7d28ecfd77b2f200dee6b9e3ac01d20d9f0a52ca..ee3d8d5774774bee5c5df887bb687e717064c55c 100644 --- a/src/main/java/model/Road.java +++ b/src/main/java/model/Road.java @@ -1,4 +1,29 @@ package model; -public class Road { +import util.Position; + +public class Road extends BoardElement implements Terrain{ + public Road(Position position) { + super(position); + } + + @Override + public String getType() { + return null; + } + + @Override + public String toString() { + return null; + } + + @Override + public boolean isTraversableByFire() { + return false; + } + + @Override + public boolean isTraversableByFirefighter() { + return true; + } } diff --git a/src/main/java/model/Terrain.java b/src/main/java/model/Terrain.java index 61baa9799274892bc75510775a38e0cefecdff90..bc195166771072bfc1dbf44327a6b35973b4a078 100644 --- a/src/main/java/model/Terrain.java +++ b/src/main/java/model/Terrain.java @@ -2,12 +2,7 @@ package model; public interface Terrain { - static boolean isTraversableByFire() { - return false; - } - - static boolean isTraversableByFirefighter() { - return false; - } + boolean isTraversableByFire(); + boolean isTraversableByFirefighter(); } diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java index b9f1e855b6f050a4e9a85413ba250436ff7ad8f7..ae5bb575a728aaa4a5e946c8b064213dc8b401e1 100644 --- a/src/main/java/view/ViewElement.java +++ b/src/main/java/view/ViewElement.java @@ -3,7 +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.BLACK); + FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE) , CLOUD(Color.GRAY),MOTORIZED(Color.BLACK) , MOUNTAIN(Color.GREEN), ROCKY(Color.BLACK), + ROAD(Color.BROWN); final Color color; ViewElement(Color color) { this.color = color;