diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin index 305d8943306fe289cf74ab12d5f90adfb255bd13..d9005d1777945712c21df336288f49b1536dbeeb 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 0e7a907a35fa1296186c88360338f30ad0d21fba..202fedd4a0c33dd7452e76ee653df263ef983031 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 d80f73d5d153784c2653904efa6ad499aa2b1d52..26237891b883d2efb33362eab616931d969fa5d2 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 7f964308e83f5a94c21404dab2b1ef5069dc4544..fd6eb11de62d8a1380c454eda64c76dbbd9426dd 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 237c0290c7b4ac2e6de64c46cbfa42b22cce4343..37e3812235cfa7f2f06c68e37405e5053db2aa1d 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 be3045945a5b937c7918772e67d21c2ef749c764..9eba45426e148904a2494131d499cc59676d57de 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 92a2b722540ae8ae1d5c93881b90cfc08d162c5a..eadcb283719be38f0c73cf3c649f55673d10ee0e 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/controller/Controller.class b/build/classes/java/main/controller/Controller.class index d065bd5dfaab8640cbea20806d61f79d0867da45..1f4f51d3c4da6dd5faadbc1331eafad5adb41878 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/FirefighterBoard$1.class b/build/classes/java/main/model/FirefighterBoard$1.class index c678800e340a424d63f8419f3426761f04bc6d45..119af8394727bb7d71d86b6a356f890372fb769b 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 439370a9cf3e81f943e985a67690580dd7b49b3b..476abb627665fca8fdb32894934b0362bbdf463b 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 ef86abea6c0b56da02b5a42cfd91a39108401c81..a754112236156144fdccdb51883328300f1874a3 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 f8689dddb9f3d7f8bc408a1c0db69f5a41101aaf..64f0b49ed5863b2a25cce8a921606eef79bfabdb 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 4ab2b334e3ac1fb502c67b8dbded51f09ca58b02..9e776bc14ee8cfc60beaf454877354f5567ee0ca 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/libs/firefighter-all.jar b/build/libs/firefighter-all.jar index 4d96d916601c71cff5491caa76660f7f282a2ed4..619374e47ddcafe0763e346a06e42f6272b0da1b 100644 Binary files a/build/libs/firefighter-all.jar and b/build/libs/firefighter-all.jar differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index d38261c5ea666b69194f24f866e82c0568dfcdd1..58ae24dcaf66a6cc3c32cff70f21ceaf68ec0956 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 c3f4ee625b977c0226cb64ceea50266d6efd497a..4fa02fdd7bd885a96f6f2afbce76c95dbfe91db2 100644 --- a/src/main/java/app/SimulatorApplication.java +++ b/src/main/java/app/SimulatorApplication.java @@ -18,10 +18,11 @@ public class SimulatorApplication extends javafx.application.Application { private static final int BOX_WIDTH = 30; private static final int BOX_HEIGHT = 30; public static final int INITIAL_FIRE_COUNT = 5; - public static final int INITIAL_FIREFIGHTER_COUNT = 5; - public static final int INITIAL_ROAD_COUNT = 20; - public static final int INITIAL_CLOUD_COUNT = 3; + public static final int INITIAL_FIREFIGHTER_COUNT = 4; + public static final int INITIAL_ROAD_COUNT = 10; + public static final int INITIAL_CLOUD_COUNT = 5; public static final int INITIAL_MOUTAIN_COUNT = 5; + public static final int INITIAL_FIRE_TRUCK_COUNT = 2; public static final int INITIAL_ROCKS_COUNT = 5; private Stage primaryStage; @@ -50,7 +51,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_CLOUD_COUNT, INITIAL_MOUTAIN_COUNT, INITIAL_ROCKS_COUNT); + INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_ROAD_COUNT,INITIAL_CLOUD_COUNT, INITIAL_MOUTAIN_COUNT, INITIAL_ROCKS_COUNT, INITIAL_FIRE_TRUCK_COUNT); } private void showScene() { diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index fd265eb44ebb73210ad4782931fd4772a2318c38..b4d158c58e47569f10a25d9bec15741d10259110 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,int initialcloudCount, int initialMountainsCount, int initialRocksCount) { + public void initialize(int boxWidth, int boxHeight, int columns, int rows, int fireCount, int firefighterCount, int initialRoadCount,int initialcloudCount, int initialMountainsCount, int initialRocksCount, int initialFiretruckCount) { // Initialize the simulation board and connect it to the grid - board = new FirefighterBoard(columns, rows, fireCount, firefighterCount, initialRoadCount,initialcloudCount, initialMountainsCount, initialRocksCount); + board = new FirefighterBoard(columns, rows, fireCount, firefighterCount, initialRoadCount,initialcloudCount, initialMountainsCount, initialRocksCount, initialFiretruckCount); grid.initialize(columns, rows, boxWidth, boxHeight, board); // Initialize timeline for automatic progression @@ -45,6 +45,10 @@ public class Controller { // Ensure initial UI state is consistent updateGenerationLabel(); pauseToggleButton.setSelected(true); + stopSimulation(); + board.reset(); + grid.repaint(); + updateGenerationLabel(); } diff --git a/src/main/java/model/FireTruckmovmentStrategy.java b/src/main/java/model/FireTruckmovmentStrategy.java new file mode 100644 index 0000000000000000000000000000000000000000..b544e9b5b72d7538075a1792cffc2e900e25fd31 --- /dev/null +++ b/src/main/java/model/FireTruckmovmentStrategy.java @@ -0,0 +1,155 @@ +package model; + +import util.Position; +import util.TargetStrategy; + +import java.util.*; + +public class FireTruckmovmentStrategy implements Strategy { + private final TargetStrategy targetStrategy = new TargetStrategy(); + private List<Position> fireTruckPositions; + private final Set<Position> firePositions; + private final Map<Position, List<Position>> neighbors; + + public FireTruckmovmentStrategy(List<Position> firefighterPositions, Set<Position> firePositions, Map<Position, List<Position>> neighbors) { + this.fireTruckPositions = firefighterPositions; + this.firePositions = firePositions; + this.neighbors = neighbors; + } + + @Override + public List<Position> update() { + List<Position> modifiedPositions = new ArrayList<>(); + List<Position> newFirefighterPositions = new ArrayList<>(); + + for (Position fireTruckPosition : fireTruckPositions) { + Position firstStep = nextValidPosition(fireTruckPosition ); // First step + extinguishNearbyFires(firstStep, modifiedPositions); // Extinguish after first step + + Position secondStep = nextValidPosition(firstStep); // Second step + extinguishNearbyFires(secondStep, modifiedPositions); // Extinguish after second step + + // Update positions + newFirefighterPositions.add(secondStep); + modifiedPositions.add(fireTruckPosition ); // Original position + modifiedPositions.add(firstStep); // First step position + modifiedPositions.add(secondStep); // Second step position + } + + fireTruckPositions = newFirefighterPositions; // Update firefighter positions + return modifiedPositions; + } + + private Position nextValidPosition(Position currentPosition) { + return targetStrategy.neighborClosestToFire(currentPosition, firePositions, neighbors); + } + + private void extinguishNearbyFires(Position position, List<Position> modifiedPositions) { + List<Position> firesToExtinguish = new ArrayList<>(neighbors.getOrDefault(position, List.of())); + firesToExtinguish.add(position); // Include current position + firesToExtinguish.removeIf(pos -> !firePositions.contains(pos)); // Only include actual fires + + extinguishAll(firesToExtinguish); + modifiedPositions.addAll(firesToExtinguish); // Track extinguished fires + } + + private void extinguishAll(List<Position> positions) { + firePositions.removeAll(positions); + } + + @Override + public List<Position> getModelPositions() { + return fireTruckPositions; + } + + @Override + public Set<Position> getFirePositions() { + return firePositions; + } +} + + +/*package model; + +import util.Position; +import util.TargetStrategy; + + +import java.util.*; + +public class FireTruckmovmentStrategy implements Strategy{ + private final TargetStrategy targetStrategy = new TargetStrategy(); + private List<Position> FireTruckPositions; + private final Set<Position> firePositions; + private final Map<Position, List<Position>> neighbors; + + public FireTruckmovmentStrategy(List<Position> fireTruckPositions, Set<Position> firePositions, Map<Position, List<Position>> neighbors) { + this.FireTruckPositions = fireTruckPositions; + this.firePositions = firePositions; + this.neighbors = neighbors; + } + + @Override + public List<Position> update() { + List<Position> modifiedPositions = new ArrayList<>(); + List<Position> newFireTruckPositions = new ArrayList<>(); + + for (Position fireTruckPosition : FireTruckPositions) { + // Perform two steps for each fire truck + for (int step = 0; step < 2; step++) { + Position nextPosition = NextValidPosition(fireTruckPosition); + + // Identify fires to extinguish around the next position + List<Position> firesToExtinguish = new ArrayList<>(neighbors.getOrDefault(nextPosition, List.of())); + firesToExtinguish.add(nextPosition); + firesToExtinguish.removeIf(pos -> !firePositions.contains(pos)); + + // Extinguish fires + extinguishAll(firesToExtinguish); + modifiedPositions.addAll(firesToExtinguish); + + // Track positions + modifiedPositions.add(fireTruckPosition); + modifiedPositions.add(nextPosition); + + // Update fire truck position for the next step + fireTruckPosition = nextPosition; + } + + // Store the final position of the fire truck after two steps + newFireTruckPositions.add(fireTruckPosition); + } + + // Update fire truck positions + FireTruckPositions = newFireTruckPositions; + return modifiedPositions; + } + + + private Position NextValidPosition(Position currentPosition) { + Position target = targetStrategy.neighborClosestToFire(currentPosition, firePositions, neighbors); + return target; + } + + private void extinguishAll(List<Position> positions) { + firePositions.removeAll(positions); + } + + + @Override + public List<Position> getModelPositions() { + return FireTruckPositions; + } + + @Override + public Set<Position> getFirePositions() { + return firePositions; + } +}*/ + + + + + + + diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index 4255afb848f7d125992177b185f673ab9aa770c1..e079b5953ae998606efe9c3410f52a8d18f85c0a 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -14,6 +14,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { private final int initialRoadCount; private final int initialcloudCount; private final int initialmountainsCount; + private final int initialFireTruckCount; private final int initialrocksCount; private List<Position> firefighterPositions; @@ -24,11 +25,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> { private List<Position> cloudPositions; private Set<Position> moutainsPositions; private Set<Position> rocksPositions; + private List<Position> fireTruckPositions; private int step = 0; // Constructor for FirefighterBoard - public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount, int initialcloudCount, int initialmountainsCount, int initialrocksCount) { + public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount, + int initialcloudCount, int initialmountainsCount, int initialFireTruckCount, int initialrocksCount) { this.columnCount = columnCount; this.rowCount = rowCount; this.initialFireCount = initialFireCount; @@ -37,6 +40,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { this.initialcloudCount = initialcloudCount; this.initialmountainsCount = initialmountainsCount; this.initialrocksCount = initialrocksCount; + this.initialFireTruckCount = initialFireTruckCount; this.positions = new Position[rowCount][columnCount]; this.firefighterPositions = new ArrayList<>(); @@ -46,6 +50,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { this.moutainsPositions = new HashSet<>(); this.roadPositions = new HashSet<>(); this.rocksPositions = new HashSet<>(); + this.fireTruckPositions = new ArrayList<>(); initializeBoard(); } @@ -78,6 +83,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> { for (int i = 0; i < initialrocksCount; i++) { rocksPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount))); } + // Initialize FireTruck Positions + for (int i = 0; i < initialFireTruckCount; i++) { + fireTruckPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount))); + } // Initialize neighbors map @@ -133,6 +142,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> { result.add(ModelElement.ROCKS); } } + case FIRETRUCK -> { + if (fireTruckPositions.contains(position)) { + result.add(ModelElement.FIRETRUCK); + } + } default ->{ } } @@ -158,13 +172,16 @@ public class FirefighterBoard implements Board<List<ModelElement>> { @Override public void reset() { step = 0; - Initializer initializer = new Initializer(columnCount,rowCount,initialFireCount,initialFirefighterCount, initialRoadCount,initialcloudCount, initialmountainsCount, initialrocksCount); + Initializer initializer = new Initializer(columnCount,rowCount,initialFireCount,initialFirefighterCount, + initialRoadCount,initialcloudCount, initialmountainsCount, initialFireTruckCount,initialrocksCount); + resetPos(firePositions,initializer.getFirePositions()); resetPos(firefighterPositions,initializer.getFirefighterPositions()); resetPos(cloudPositions,initializer.getCloudPositions()); resetPos(moutainsPositions,initializer.getMountainsPositions()); resetPos(roadPositions,initializer.getRoadPositions()); resetPos(rocksPositions,initializer.getRoadPositions()); + resetPos(fireTruckPositions,initializer.getFireTruckPositions()); neighbors.clear(); neighbors.putAll(initializer.getNeighbors()); @@ -180,12 +197,14 @@ public class FirefighterBoard implements Board<List<ModelElement>> { public void setState(List<ModelElement> state, Position position) { firePositions.remove(position); firefighterPositions.remove(position); + fireTruckPositions.remove(position); for (ModelElement element : state) { switch (element) { case FIRE -> firePositions.add(position); case FIREFIGHTER -> firefighterPositions.add(position); case CLOUD -> cloudPositions.add(position); + case FIRETRUCK -> fireTruckPositions.add(position); } } } @@ -195,7 +214,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> { List<ModelElement> elements = List.of( ModelElement.FIRE, ModelElement.FIREFIGHTER, - ModelElement.CLOUD + ModelElement.CLOUD, + ModelElement.FIRETRUCK ); List<Position> modifiedPositions = new ArrayList<>(); @@ -204,6 +224,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { case FIRE -> new SimpleFireSpreadStrategy(firePositions, neighbors,moutainsPositions,roadPositions, rocksPositions,step); case FIREFIGHTER -> new FirefighterMovementStrategy(firefighterPositions,firePositions,neighbors); case CLOUD -> new CloudStrategy(cloudPositions,firePositions,neighbors,rowCount,columnCount); + case FIRETRUCK -> new FirefighterMovementStrategy(fireTruckPositions,firePositions,neighbors); default -> throw new IllegalStateException("Type de modèle inconnu : " + element); }; modifiedPositions.addAll(strategy.update()); @@ -212,6 +233,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { case FIRE -> firePositions = strategy.getFirePositions(); case FIREFIGHTER -> firefighterPositions = strategy.getModelPositions(); case CLOUD -> cloudPositions = strategy.getModelPositions(); + case FIRETRUCK -> fireTruckPositions = strategy.getModelPositions(); } } step++; @@ -225,7 +247,6 @@ public class FirefighterBoard implements Board<List<ModelElement>> { for (Position firePosition : firePositions) { updatedElements.add(new Pair<>(firePosition, ModelElement.FIRE)); } - // Add firefighter positions for (Position firefighterPosition : firefighterPositions) { updatedElements.add(new Pair<>(firefighterPosition, ModelElement.FIREFIGHTER)); @@ -233,16 +254,16 @@ 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)); } for (Position moutainPosition : moutainsPositions){ updatedElements.add(new Pair<>(moutainPosition, ModelElement.MOUTAIN)); } + for (Position FireTruckPosition : fireTruckPositions){ + System.out.println(FireTruckPosition); + updatedElements.add(new Pair<>(FireTruckPosition, ModelElement.FIRETRUCK)); + } for (Position rockPosition : rocksPositions){ updatedElements.add(new Pair<>(rockPosition,ModelElement.ROCKS)); } diff --git a/src/main/java/model/Initializer.java b/src/main/java/model/Initializer.java index 07cff900ecce9bb6161865cd6d0e54f34919f330..3fc0707522557576777fc8cd01ae47e64544b36a 100644 --- a/src/main/java/model/Initializer.java +++ b/src/main/java/model/Initializer.java @@ -14,6 +14,7 @@ public class Initializer { private final int initialRoadCount; private final int initialcloudCount; private final int initialMoutainCount; + private final int initialFireTruckCount; private final int initialRocksCount; @@ -24,13 +25,14 @@ public class Initializer { private final Set<Position> firePositions; private final List<Position> cloudPositions; private final Set<Position> mountainsPositions; + private final List<Position> FireTruckPositions; private final Set<Position> rocksPositions; private int step = 0; private final Random randomGenerator = new Random(); - public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount,int initialcloudCount, int initialMoutainCount,int initialRocksCount) { + public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount,int initialcloudCount, int initialMoutainCount, int initialFireTruckCount,int initialRocksCount) { this.columnCount = columnCount; this.rowCount = rowCount; this.initialFireCount = initialFireCount; @@ -39,6 +41,7 @@ public class Initializer { this.initialcloudCount = initialcloudCount; this.initialMoutainCount = initialMoutainCount; this.initialRocksCount = initialRocksCount; + this.initialFireTruckCount = initialFireTruckCount; this.positions = new Position[rowCount][columnCount]; this.neighbors = new HashMap<>(); @@ -47,6 +50,7 @@ public class Initializer { this.RoadPositions = new ArrayList<>(); this.cloudPositions = new ArrayList<>(); this.mountainsPositions = new HashSet<>(); + this.FireTruckPositions = new ArrayList<>(); this.rocksPositions = new HashSet<>(); initializePositions(); initializeNeighbors(); @@ -78,6 +82,7 @@ public class Initializer { initializeRoadPositions(); initializeCloudsPositions(); initializeMoutainsPositions(); + initializeFireTruckPositions(); initializeRocksPositions(); } @@ -92,6 +97,10 @@ public class Initializer { private void initializeCloudsPositions() { addRandomPositions(cloudPositions, initialcloudCount); } + private void initializeFireTruckPositions() { + addRandomPositions(FireTruckPositions, initialFireTruckCount); + } + private void initializeMoutainsPositions() {addRandomPositions(mountainsPositions, initialMoutainCount);} private void initializeRocksPositions() {addRandomPositions(rocksPositions, initialRocksCount);} @@ -151,6 +160,9 @@ public class Initializer { public Set<Position> getMountainsPositions() { return mountainsPositions; } + public List<Position> getFireTruckPositions() { + return FireTruckPositions; + } public Set<Position> getRocksPositions() { return rocksPositions; } diff --git a/src/main/java/model/ModelElement.java b/src/main/java/model/ModelElement.java index 8db860b59e5e2906e2611e3414241c326a4353f0..4fec322be591854f3bc25fe18d457b98fb9e4781 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"),ROAD("grey"),EMPTY("white"), MOUTAIN("brown"), ROCKS("lightBrown"); + FIREFIGHTER("blue"), FIRE("red"), CLOUD("darkgrey"),ROAD("grey"),EMPTY("white"), MOUTAIN("brown"),FIRETRUCK("orange"),ROCKS("lightBrown"); private final String color; diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java index 453da0f232ca7f935532361f39568255a096d724..c6f94db7f193e33cddda6ac4ba705a656e111a5b 100644 --- a/src/main/java/view/FirefighterGrid.java +++ b/src/main/java/view/FirefighterGrid.java @@ -8,7 +8,7 @@ import model.ModelElement; import model.FirefighterBoard; import util.Position; -public class FirefighterGrid extends Canvas { +public class FirefighterGrid extends Canvas { private int columns; private int rows; @@ -41,13 +41,15 @@ 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) { + }else if (element== ModelElement.ROAD){ gc.setFill(Color.WHITE); - } else if (element == ModelElement.CLOUD) { + }else if (element == ModelElement.CLOUD) { gc.setFill(Color.YELLOW); - } else if (element == ModelElement.MOUTAIN) { + }else if (element == ModelElement.FIRETRUCK) { + gc.setFill(Color.ORANGE); + }else if (element == ModelElement.MOUTAIN) { gc.setFill(Color.GREEN); } else if (element == ModelElement.ROCKS) { gc.setFill(Color.LIGHTSKYBLUE); diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java index 957df8f7b5de19166fa715769c5e45131a2f44e0..384dd61254e15b4f85a2edbc534387f0f2882f15 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),CLOUD(Color.YELLOW),MOUTAIN(Color.GREEN),ROCKS(Color.LIGHTSKYBLUE); + ROAD(Color.GRAY), FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE),CLAUD(Color.YELLOW),FIRETRUCK(Color.ORANGE),ROCKS(Color.LIGHTSKYBLUE); final Color color;