diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin index d26b7edfcd4cf9bbf2930e7fc6f1fbb625bf4bb3..d300017db9d3689bf20d9b7e8e88687e2330937a 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 49d38ce06c0e990758eb248c37106da680575bca..c7d4c6e18cf7dca7bf62b6f679d816a43df9a1b9 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 a75277f71d8c90f49f83adb06ec2e4dc568e73c1..98488ecb977608b232ad6304aca455824b3d58d9 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 15a12a274dae0bfed0e54976eea62f716ea9f313..50800a82221e8663b00c731901bb525155446144 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 d5e5c59d82330ed3f4165e56deffc79d7c05e941..169a69f92254ccb8dcafdda9e3fb0ab138b4a1d6 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 07e47e892fe0ae663d910f9f90050a2992264529..f3c70417fb48092deb323db99be6b2f95b79f083 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index cd3f45fa4bfe9b48393c1c7229ebd0484e14dc8a..cf8f879d86f1c8997a5f49fa9f7ba5d4a2a605d3 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/CloudStrategy.java b/src/main/java/model/CloudStrategy.java index 8399dc6da82bbc5767aa11297d110eda226b7ad8..49ee8acedc2bd8e1a32a69fccf21330f39dffc6b 100644 --- a/src/main/java/model/CloudStrategy.java +++ b/src/main/java/model/CloudStrategy.java @@ -1,12 +1,10 @@ package model; import util.Position; -import util.TargetStrategy; import java.util.*; public class CloudStrategy implements Strategy { - private final TargetStrategy targetStrategy = new TargetStrategy(); private List<Position> cloudPositions; private final Set<Position> firePositions; private final Map<Position, List<Position>> neighbors; diff --git a/src/main/java/model/FireTruckmovmentStrategy.java b/src/main/java/model/FireTruckmovmentStrategy.java index d531544a80cd72cbeed35d141579f956dd5fce55..3f8a9f0ca9010d954c5f0301650b2fd31329d44f 100644 --- a/src/main/java/model/FireTruckmovmentStrategy.java +++ b/src/main/java/model/FireTruckmovmentStrategy.java @@ -20,22 +20,22 @@ public class FireTruckmovmentStrategy implements Strategy { @Override public List<Position> update() { List<Position> modifiedPositions = new ArrayList<>(); - List<Position> newFirefighterPositions = new ArrayList<>(); + List<Position> newFirefTruckPositions = new ArrayList<>(); for (Position fireTruckPosition : fireTruckPositions) { - Position firstStep = nextValidPosition(fireTruckPosition ); // First step + Position firstStep = nextValidPosition(fireTruckPosition ); // 1er etape extinguishNearbyFires(firstStep, modifiedPositions); - Position secondStep = nextValidPosition(firstStep); // Second step + Position secondStep = nextValidPosition(firstStep); // 2eme etape extinguishNearbyFires(secondStep, modifiedPositions); - newFirefighterPositions.add(secondStep); - modifiedPositions.add(fireTruckPosition ); // Original position - modifiedPositions.add(firstStep); // First step position - modifiedPositions.add(secondStep); // Second step position + newFirefTruckPositions.add(secondStep); + modifiedPositions.add(fireTruckPosition ); + modifiedPositions.add(firstStep); + modifiedPositions.add(secondStep); } - fireTruckPositions = newFirefighterPositions; + fireTruckPositions = newFirefTruckPositions; return modifiedPositions; } @@ -45,11 +45,11 @@ public class FireTruckmovmentStrategy implements Strategy { 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 + firesToExtinguish.add(position); + firesToExtinguish.removeIf(pos -> !firePositions.contains(pos)); extinguishAll(firesToExtinguish); - modifiedPositions.addAll(firesToExtinguish); // Track extinguished fires + modifiedPositions.addAll(firesToExtinguish); } private void extinguishAll(List<Position> positions) { @@ -65,90 +65,4 @@ public class FireTruckmovmentStrategy implements Strategy { 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; - } -}*/ - - - - - - - +} \ No newline at end of file diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java index c6f94db7f193e33cddda6ac4ba705a656e111a5b..6eff12e52fa24c5808f8d5a00252b7c24523c14c 100644 --- a/src/main/java/view/FirefighterGrid.java +++ b/src/main/java/view/FirefighterGrid.java @@ -23,22 +23,19 @@ public class FirefighterGrid extends Canvas { this.boxWidth = boxWidth; this.boxHeight = boxHeight; this.board = board; - setWidth(columns * boxWidth); // Set canvas width based on grid size - setHeight(rows * boxHeight); // Set canvas height based on grid size + setWidth(columns * boxWidth); + setHeight(rows * boxHeight); } - // Repaint the grid and all elements (fire and firefighter) public void repaint() { - if (board == null) return; // Exit if board is not set + if (board == null) return; GraphicsContext gc = getGraphicsContext2D(); - gc.clearRect(0, 0, getWidth(), getHeight()); // Clear the canvas before drawing + gc.clearRect(0, 0, getWidth(), getHeight()); - // Iterate over the list of updated elements (positions and elements like fire or firefighter) for (Pair<Position, ModelElement> pair : board.getUpdatedElements()) { Position position = pair.getKey(); // Get the Position from the Pair ModelElement element = pair.getValue(); // Get the ModelElement (either FIRE or FIREFIGHTER) - // Set the color based on the element type if (element == ModelElement.FIRE) { gc.setFill(Color.RED); // Fire is red }else if (element == ModelElement.FIREFIGHTER) { @@ -57,17 +54,14 @@ public class FirefighterGrid extends Canvas { gc.setFill(Color.WHITE); // Empty space is white } - // Draw the element on the grid at the appropriate position gc.fillRect(position.getCol() * boxWidth, position.getRow() * boxHeight, boxWidth, boxHeight); gc.setStroke(Color.LIGHTGRAY); // Grid border color gc.strokeRect(position.getCol() * boxWidth, position.getRow() * boxHeight, boxWidth, boxHeight); } - // Optionally, draw the grid lines on top of the elements drawGridLines(gc); } - // Helper method to draw the grid lines private void drawGridLines(GraphicsContext gc) { gc.setStroke(Color.GRAY); for (int col = 0; col < columns; col++) {