diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin index 3e4639d57db2abe6148564a234c45370d5e4f266..d272bec8c57c280c71a26cb9b0aa10bf9f185d95 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 cad55c85b0edb7433bfcc8ff5ccf9b8e6310b129..2f4203bae8d2a9c93bc24f9885e80fbd8ed8195e 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 7476ae7e5dcc880edb67c3e9b854d8b563ce19d8..e9c1239a490550c9a7aafb79ea24146e616cbe0d 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 71521cbbf74ba9f9d3d61376d6f5dced1ae5f5df..1b189eae87aec7e4ebe829113003dcaecfda3b4e 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 28ccbc5f765f594e3787667963b3d02f13bbb0a2..0aeba1240cd74ee4653e37f5f98873ffe354b6ab 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 e353ce8b190d126c22bf0c729790b617b1d8de75..cc5b4199f6c5be3ce5ef9cc7e3475cbf712d34eb 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 c794404c6048e287bfab3f8470f8f2b7f3be6126..8cdb4ed274b5f200e38a2680759e2fac291ccc49 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/model/FirefighterBoard$1.class b/build/classes/java/main/model/FirefighterBoard$1.class index 36139e86884c256a348af7e1b2a13b5fa944c975..340e59817ded726fe7aa0bc607d15840ee0e0c47 100644 Binary files a/build/classes/java/main/model/FirefighterBoard$1.class and b/build/classes/java/main/model/FirefighterBoard$1.class differ diff --git a/build/classes/java/main/model/FirefighterBoard.class b/build/classes/java/main/model/FirefighterBoard.class index b3d66851b3b43c4fdec982337842d718207d4bf5..5d0dad747dedc784fd9b0104c23704c1fac1e7e3 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/ModelElement.class b/build/classes/java/main/model/ModelElement.class index ab695532d616c8cf4fa9ac577236893340a8bc44..fe891d9e06c9418e7108a3585c3bace42b77ae48 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/view/FirefighterGrid.class b/build/classes/java/main/view/FirefighterGrid.class index 18e46ef5be06988a93fa104fac2993de3f3c5349..37d92b1265d1f3a542d09824b51c0426c2cbafa8 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/ViewElement.class b/build/classes/java/main/view/ViewElement.class index 6e0ba4cb9d010f7ec89661d33c7f27a0eeba7153..13960325fcfe0d305876ea83d4af1b454e819c14 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 2f99c47529d3dbdf3ba71e7bb213540604f17fe6..4ec4d11099f238606374670516d33c8f2f1da147 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/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java index 4bd8909e472206491ec6693fe84bcc6342da22d1..31689a20dc0bd9f5bf307eeee5951f019bea16b8 100644 --- a/src/main/java/app/SimulatorApplication.java +++ b/src/main/java/app/SimulatorApplication.java @@ -20,6 +20,7 @@ public class SimulatorApplication extends javafx.application.Application { public static final int INITIAL_FIRE_COUNT = 5; public static final int INITIAL_FIREFIGHTER_COUNT = 4; public static final int INITIAL_ROAD_COUNT = 10; + public static final int INITIAL_CLAUD_COUNT = 3; private Stage primaryStage; private Parent view; @@ -47,7 +48,7 @@ public class SimulatorApplication extends javafx.application.Application { Controller controller = loader.getController(); controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT, - INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_ROAD_COUNT); + INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_ROAD_COUNT,INITIAL_CLAUD_COUNT); } private void showScene() { diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index 988c916cc3b284d9ecae1b112a2364401620d193..8800ae20468a081bb23742381f360a45a7fbb224 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -33,9 +33,9 @@ public class Controller { @FXML private FirefighterGrid grid; - public void initialize(int boxWidth, int boxHeight, int columns, int rows, int fireCount, int firefighterCount, int initialRoadCount) { + public void initialize(int boxWidth, int boxHeight, int columns, int rows, int fireCount, int firefighterCount, int initialRoadCount,int initialclaudCount) { // Initialize the simulation board and connect it to the grid - board = new FirefighterBoard(columns, rows, fireCount, firefighterCount, initialRoadCount); + board = new FirefighterBoard(columns, rows, fireCount, firefighterCount, initialRoadCount,initialclaudCount); grid.initialize(columns, rows, boxWidth, boxHeight, board); // Initialize timeline for automatic progression diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index 61a83b0bfe511c82f59de9055f2da8abcf4c6a4d..e545e7094ef5576f816ce0e6b9ca052968ef18ee 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -11,9 +11,12 @@ public class FirefighterBoard implements Board<List<ModelElement>> { private final int rowCount; private final int initialFireCount; private final int initialFirefighterCount; + private final int initialRoadCount; + private final int initialcloudCount; private List<Position> firefighterPositions; private Set<Position> firePositions; + private Set<Position> roadPositions; private final Map<Position, List<Position>> neighbors; private final Position[][] positions; private List<Position> cloudPositions; @@ -21,17 +24,20 @@ public class FirefighterBoard implements Board<List<ModelElement>> { private int step = 0; // Constructor for FirefighterBoard - public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount) { + public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount, int initialcloudCount) { this.columnCount = columnCount; this.rowCount = rowCount; this.initialFireCount = initialFireCount; this.initialFirefighterCount = initialFirefighterCount; + this.initialRoadCount = initialRoadCount; + this.initialcloudCount = initialcloudCount; this.positions = new Position[rowCount][columnCount]; this.firefighterPositions = new ArrayList<>(); this.firePositions = new HashSet<>(); this.neighbors = new HashMap<>(); this.cloudPositions = new ArrayList<>(); + this.roadPositions = new HashSet<>(); initializeBoard(); } @@ -48,6 +54,15 @@ public class FirefighterBoard implements Board<List<ModelElement>> { for (int i = 0; i < initialFirefighterCount; i++) { firefighterPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount))); } + // Initialize road positions + for (int i = 0; i < initialRoadCount; i++) { + roadPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount))); + } + // Initialize road positions + for (int i = 0; i < initialcloudCount; i++) { + cloudPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount))); + } + // Initialize neighbors map for (int row = 0; row < rowCount; row++) { @@ -87,6 +102,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> { result.add(ModelElement.CLOUD); } } + case ROAD -> { + if (roadPositions.contains(position)) { + result.add(ModelElement.ROAD); + } + } default ->{ } } @@ -112,10 +132,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> { @Override public void reset() { step = 0; - Initializer initializer = new Initializer(columnCount,rowCount,initialFireCount,initialFirefighterCount); + Initializer initializer = new Initializer(columnCount,rowCount,initialFireCount,initialFirefighterCount, initialRoadCount,initialcloudCount); resetPos(firePositions,initializer.getFirePositions()); resetPos(firefighterPositions,initializer.getFirefighterPositions()); resetPos(cloudPositions,initializer.getCloudPositions()); + resetPos(roadPositions,initializer.getRoadPositions()); neighbors.clear(); neighbors.putAll(initializer.getNeighbors()); @@ -204,6 +225,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> { for (Position cloudPosition : cloudPositions) { updatedElements.add(new Pair<>(cloudPosition, ModelElement.CLOUD)); } + // Add firefighter positions + for (Position cloudPosition : cloudPositions) { + updatedElements.add(new Pair<>(cloudPosition, ModelElement.CLOUD)); + } + for (Position roadPosition : roadPositions) { + updatedElements.add(new Pair<>(roadPosition, ModelElement.ROAD)); + } return updatedElements; } diff --git a/src/main/java/model/Initializer.java b/src/main/java/model/Initializer.java index df94f62c86ad9ee9d36d296f182c41eafe316d5b..b5d4dde0a076dfdd233334b6b9d7f9a63ef3038e 100644 --- a/src/main/java/model/Initializer.java +++ b/src/main/java/model/Initializer.java @@ -10,6 +10,7 @@ public class Initializer { private final int initialFireCount; private final int initialFirefighterCount; private final int initialRoadCount; + private final int initialcloudCount; private final Position[][] positions; private final Map<Position, List<Position>> neighbors; @@ -24,12 +25,13 @@ public class Initializer { private static final int cloudCount = 3; - public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount) { + public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount,int initialcloudCount) { this.columnCount = columnCount; this.rowCount = rowCount; this.initialFireCount = initialFireCount; this.initialFirefighterCount = initialFirefighterCount; this.initialRoadCount = initialRoadCount; + this.initialcloudCount = initialcloudCount; this.positions = new Position[rowCount][columnCount]; this.neighbors = new HashMap<>(); @@ -62,6 +64,7 @@ public class Initializer { initializeFirePositions(); initializeFirefighters(); initializeRoadPositions(); + initializeCloudsPositions(); } private void initializeFirePositions() { @@ -70,11 +73,13 @@ public class Initializer { private void initializeFirefighters() { addRandomPositions(firefighterPositions, initialFirefighterCount); } - private void initializeRoadPositions() {addRandomPositions(RoadPositions, initialRoadCount);} + private void initializeRoadPositions() { + addRandomPositions(RoadPositions, initialRoadCount);} private void initializeCloudsPositions() { addRandomPositions(cloudPositions, cloudCount); } + private void addRandomPositions(Collection<Position> targetCollection, int count) { while (targetCollection.size() < count) { Position randomPosition = randomPosition(); @@ -121,6 +126,9 @@ public class Initializer { public Set<Position> getFirePositions() { return firePositions; } + public List<Position> getRoadPositions() { + return RoadPositions; + } public List<Position> getCloudPositions() {return cloudPositions;} public int getStep() {return step;} diff --git a/src/main/java/model/ModelElement.java b/src/main/java/model/ModelElement.java index aa0ba36d2d22820408a534be5e919589025a3cde..8a0f27b21509a2424ae25f2c8309a8d885b2ff72 100644 --- a/src/main/java/model/ModelElement.java +++ b/src/main/java/model/ModelElement.java @@ -2,7 +2,7 @@ package model; public enum ModelElement { - FIREFIGHTER("blue"), FIRE("red"), CLOUD("darkgrey"); + FIREFIGHTER("blue"), FIRE("red"), CLOUD("darkgrey"),ROAD("grey"),EMPTY("white"); private final String color; diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java index 120b3a06f34b2afe1c493909a72da7a33c6b5fb9..4f4d0aa35418321ab9599804e3d57a61e956ee44 100644 --- a/src/main/java/view/FirefighterGrid.java +++ b/src/main/java/view/FirefighterGrid.java @@ -41,12 +41,11 @@ public class FirefighterGrid extends Canvas { // Set the color based on the element type if (element == ModelElement.FIRE) { gc.setFill(Color.RED); // Fire is red - } else if (element == ModelElement.FIREFIGHTER) { + }else if (element == ModelElement.FIREFIGHTER) { gc.setFill(Color.BLUE); // Firefighter is blue - } else if (element== ModelElement.ROAD){ - gc.setFill(Color.GRAY); - }else { - } else if (element == ModelElement.CLOUD){ + }else if (element== ModelElement.ROAD){ + gc.setFill(Color.WHITE); + }else if (element == ModelElement.CLOUD){ gc.setFill(Color.YELLOW); } else { gc.setFill(Color.WHITE); // Empty space is white diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java index c6eed4765158ba7922fd384c38ba8e6df8b16191..0c4f09ea7dcf7f85f785374602c50b5a022a0c82 100644 --- a/src/main/java/view/ViewElement.java +++ b/src/main/java/view/ViewElement.java @@ -3,7 +3,7 @@ package view; import javafx.scene.paint.Color; public enum ViewElement { - ROAD(Color.GRAY), FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE); + ROAD(Color.GRAY), FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE),CLAUD(Color.YELLOW); final Color color;