From 3d1739f66ebf4e468d32ed83128ed699ca0af76f Mon Sep 17 00:00:00 2001 From: ousseyn01 <ousseyn.ndiaye9@gmail.com> Date: Fri, 29 Nov 2024 22:36:29 +0100 Subject: [PATCH] For Route and Rocaille --- src/main/java/controller/Controller.java | 6 +++++ src/main/java/model/FirefighterBoard.java | 27 +++++++++++++++++++ src/main/java/model/ModelElement.java | 2 +- src/main/java/model/Mountain.java | 1 - .../model/update/NextGenerationUpdater.java | 9 +++---- src/main/java/view/ViewElement.java | 2 +- 6 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index c202d04..747de6c 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -94,6 +94,12 @@ public class Controller { if(squareState.contains(ModelElement.MOUNTAIN)){ return ViewElement.MOUNTAIN; } + if(squareState.contains(ModelElement.ROUTE)){ + return ViewElement.ROUTE; + } + if(squareState.contains(ModelElement.ROCAILLE)){ + return ViewElement.ROCAILLE; + } return ViewElement.EMPTY; } diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index dadc043..7c1960c 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -23,6 +23,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> { private final Random randomGenerator = new Random(); private NextGenerationUpdater nextGenerationUpdater; + private List<TerrainElement> terrainElements; + public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudCount, int initialMountainCount) { @@ -48,6 +50,17 @@ public class FirefighterBoard implements Board<List<ModelElement>> { // Initialisation des Updaters nextGenerationUpdater = new NextGenerationUpdater(fire, clouds, firefighters, mountains, neighbors); + + terrainElements = new ArrayList<>(); + for (int i = 0; i < 5; i++) { + Position position = randomPosition(); + terrainElements.add(new Route(position)); + } + + for (int i = 0; i < 5; i++) { + Position position = randomPosition(); + terrainElements.add(new Rocaille(position)); + } } public void initializeElements() { @@ -55,6 +68,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> { clouds = new ArrayList<>(); mountains = new ArrayList<>(); Set<Position> firePositions = new HashSet<>(); + + for (int index = 0; index < initialCloudCount; index++) { clouds.add(new Cloud(randomPosition(), neighbors)); } @@ -112,6 +127,16 @@ public class FirefighterBoard implements Board<List<ModelElement>> { if (fire.getFirePositions().contains(position)) result.add(ModelElement.FIRE); + + for (TerrainElement element : terrainElements) { + if (element.getPosition().equals(position)) { + if (element instanceof Route) { + result.add(ModelElement.ROUTE); + } else if (element instanceof Rocaille) { + result.add(ModelElement.ROCAILLE); + } + } + } return result; } @@ -151,6 +176,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> { case FIREFIGHTER -> firefighters.add(new Firefighter(position)); case CLOUD -> clouds.add(new Cloud(position, neighbors)); case MOUNTAIN -> mountains.add(new Mountain(position)); + case ROUTE -> terrainElements.add(new Route(position)); + case ROCAILLE -> terrainElements.add(new Rocaille(position)); } } } diff --git a/src/main/java/model/ModelElement.java b/src/main/java/model/ModelElement.java index 632bfad..9019ce2 100644 --- a/src/main/java/model/ModelElement.java +++ b/src/main/java/model/ModelElement.java @@ -1,5 +1,5 @@ package model; public enum ModelElement { - FIREFIGHTER, FIRE, CLOUD, MOUNTAIN + FIREFIGHTER, FIRE, CLOUD, MOUNTAIN, ROUTE, ROCAILLE } diff --git a/src/main/java/model/Mountain.java b/src/main/java/model/Mountain.java index 74ede00..644faf3 100644 --- a/src/main/java/model/Mountain.java +++ b/src/main/java/model/Mountain.java @@ -2,7 +2,6 @@ package model; import util.Position; -import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; diff --git a/src/main/java/model/update/NextGenerationUpdater.java b/src/main/java/model/update/NextGenerationUpdater.java index 72de8c2..0d3c77f 100644 --- a/src/main/java/model/update/NextGenerationUpdater.java +++ b/src/main/java/model/update/NextGenerationUpdater.java @@ -1,9 +1,6 @@ package model.update; -import model.Cloud; -import model.Fire; -import model.Firefighter; -import model.Mountain; +import model.*; import util.Position; import java.util.List; @@ -17,7 +14,8 @@ public class NextGenerationUpdater { private final Map<Position, List<Position>> neighbors; private int step; - public NextGenerationUpdater(Fire fire, List<Cloud> clouds, List<Firefighter> firefighters, List<Mountain> mountains, Map<Position, List<Position>> neighbors) { + public NextGenerationUpdater(Fire fire, List<Cloud> clouds, List<Firefighter> firefighters, List<Mountain> mountains, + Map<Position, List<Position>> neighbors) { this.fire = fire; this.clouds = clouds; this.firefighters = firefighters; @@ -34,6 +32,7 @@ public class NextGenerationUpdater { modifiedPositions.addAll(fire.spreadFire(Mountain.getMountainPositions(mountains))); } + // Gestion des nuages for (Cloud cloud : clouds) { cloud.move(); cloud.protectFromFire(fire); diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java index 733d916..9df8590 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.LIGHTGREY),MOUNTAIN(Color.CHOCOLATE), EMPTY(Color.WHITE); + FIREFIGHTER(Color.BLUE), FIRE(Color.RED), CLOUD(Color.LIGHTGREY),MOUNTAIN(Color.CHOCOLATE),ROUTE(Color.BLACK), ROCAILLE(Color.MAROON), EMPTY(Color.WHITE); final Color color; ViewElement(Color color) { this.color = color; -- GitLab