From c221e819c1de8394adbc737f7bd68f8294e9690c Mon Sep 17 00:00:00 2001 From: b22015516 <mehdi.belhachemi@etu.univ-amu.fr> Date: Fri, 22 Nov 2024 12:09:50 +0100 Subject: [PATCH] mehdi : changing updateFires --- src/main/java/app/SimulatorApplication.java | 3 ++- src/main/java/controller/Controller.java | 9 ++++++--- src/main/java/model/FirefighterBoard.java | 18 +++++++++++++++++- src/main/java/model/ModelElement.java | 3 ++- src/main/java/model/Road.java | 2 ++ src/main/java/view/ViewElement.java | 2 +- src/test/java/model/FirefighterBoardTest.java | 8 ++++---- 7 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java index cf04286..44fd3c2 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 = 15; public static final int INITIAL_FIREFIGHTER_COUNT = 10; public static final int INITIAL_CLOUD_COUNT = 5; + public static final int INITIAL_ROAD_COUNT = 5; private Stage primaryStage; @@ -46,7 +47,7 @@ public class SimulatorApplication extends javafx.application.Application { view = loader.load(); Controller controller = loader.getController(); controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT, - INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT,INITIAL_CLOUD_COUNT); + INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT,INITIAL_CLOUD_COUNT,INITIAL_ROAD_COUNT); } private void showScene() { diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index 0c9dfb7..0c89bb2 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -88,9 +88,12 @@ public class Controller { if (squareState.contains(ModelElement.FIRE)) { return ViewElement.FIRE; } - if (squareState.contains(ModelElement.CLOUD)) { // Assurez-vous que le modèle inclut bien le nuage + if (squareState.contains(ModelElement.CLOUD)) { return ViewElement.CLOUD; } + if (squareState.contains(ModelElement.ROAD)) { + return ViewElement.ROAD; + } return ViewElement.EMPTY; } @@ -128,9 +131,9 @@ public class Controller { } public void initialize(int squareWidth, int squareHeight, int columnCount, - int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount) { + int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialRoadCount) { grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); - this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloudCount)); + this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloudCount,initialRoadCount)); repaintGrid(); } diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index b60c9ae..7db4034 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -12,8 +12,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> { private final int initialFireCount; private final int initialFirefighterCount; private final int initialCloudCount; + private final int initialRoadCount; private final TargetStrategy targetStrategy = new TargetStrategy(); private List<FireFighter> firefighters; + private List<Road> roads; private Map<Position, Fire> fires = new HashMap<>(); private List<Cloud> clouds; private final Map<Position, List<Position>> neighbors = new HashMap<>(); @@ -21,7 +23,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { private int step = 0; private final Random randomGenerator = new Random(); - public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount) { + public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialRoadCount) { this.columnCount = columnCount; this.rowCount = rowCount; this.positions = new Position[rowCount][columnCount]; @@ -31,6 +33,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { this.initialFireCount = initialFireCount; this.initialFirefighterCount = initialFirefighterCount; this.initialCloudCount = initialCloudCount; + this.initialRoadCount = initialRoadCount; initializeElements(); } @@ -61,6 +64,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { firefighters = new ArrayList<>(); clouds = new ArrayList<>(); fires.clear(); + roads = new ArrayList<>(); for (int index = 0; index < initialFireCount; index++) { Position position = randomPosition(); @@ -74,6 +78,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> { clouds.add(new Cloud(randomPosition())); } + for (int index = 0; index < initialRoadCount; index++) { + roads.add(new Road(randomPosition())); + } + } private Position randomPosition() { @@ -92,6 +100,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> { for (Cloud cloud : clouds) { if (cloud.getPosition().equals(position)) result.add(ModelElement.CLOUD); } + for (Road road : roads) { + if (road.getPosition().equals(position)) result.add(ModelElement.ROAD); + } return result; } @@ -139,6 +150,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> { if (step % 2 == 0) { Set<Position> newFirePositions = new HashSet<>(); for (Position fire : new HashSet<>(fires.keySet())) { + List<Position> neighboursAvaiable = neighbors.get(fire); + + newFirePositions.addAll(neighbors.get(fire)); } for (Position position : newFirePositions) { @@ -196,11 +210,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> { public void setState(List<ModelElement> state, Position position) { extinguish(position); firefighters.removeIf(firefighter -> firefighter.getPosition().equals(position)); + firefighters.removeIf(cloud -> cloud.getPosition().equals(position)); for (ModelElement element : state) { switch (element) { case FIRE -> fires.put(position, new Fire(position)); case FIREFIGHTER -> firefighters.add(new FireFighter(position)); + case CLOUD -> clouds.add(new Cloud(position)); } } } diff --git a/src/main/java/model/ModelElement.java b/src/main/java/model/ModelElement.java index 4613ca6..b441468 100644 --- a/src/main/java/model/ModelElement.java +++ b/src/main/java/model/ModelElement.java @@ -3,6 +3,7 @@ package model; public enum ModelElement { FIREFIGHTER, FIRE, - CLOUD; + CLOUD, + ROAD; } diff --git a/src/main/java/model/Road.java b/src/main/java/model/Road.java index 21826f6..5825a84 100644 --- a/src/main/java/model/Road.java +++ b/src/main/java/model/Road.java @@ -19,4 +19,6 @@ public class Road { + + } diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java index d3e0008..c7fad49 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 { - FIREFIGHTER(Color.BLUE), FIRE(Color.RED),CLOUD(Color.LIGHTSKYBLUE), EMPTY(Color.WHITE); + FIREFIGHTER(Color.BLUE), FIRE(Color.RED),CLOUD(Color.LIGHTSKYBLUE),ROAD(Color.GRAY), EMPTY(Color.WHITE); final Color color; ViewElement(Color color) { this.color = color; diff --git a/src/test/java/model/FirefighterBoardTest.java b/src/test/java/model/FirefighterBoardTest.java index 5e6540f..c435da4 100644 --- a/src/test/java/model/FirefighterBoardTest.java +++ b/src/test/java/model/FirefighterBoardTest.java @@ -10,17 +10,17 @@ import static org.assertj.core.api.Assertions.*; public class FirefighterBoardTest { @Test void testColumnCount(){ - Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1); + Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1,5); assertThat(board.columnCount()).isEqualTo(20); } @Test void testRowCount(){ - Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1); + Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1,5); assertThat(board.rowCount()).isEqualTo(10); } @Test void testStepNumber(){ - Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1); + Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1,5); for(int index = 0; index < 10; index++){ assertThat(board.stepNumber()).isEqualTo(index); board.updateToNextGeneration(); @@ -29,7 +29,7 @@ public class FirefighterBoardTest { } @Test void testGetState_afterSet(){ - Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 0, 0,1); + Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 0, 0,1,5); Position position = new Position(1,2); assertThat(board.getState(position)).isEmpty(); board.setState(List.of(ModelElement.FIRE), position); -- GitLab