From 0aedffc22413a3d2314327f50dcc8d406538beb1 Mon Sep 17 00:00:00 2001 From: ousseyn01 <ousseyn.ndiaye9@gmail.com> Date: Wed, 27 Nov 2024 11:10:44 +0100 Subject: [PATCH] Implementation of Mountain in fighfighterboard --- src/main/java/model/FirefighterBoard.java | 35 +++++++++++++++++++---- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index 27d53ed..6ad3f72 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -10,16 +10,18 @@ public class FirefighterBoard implements Board<List<ModelElement>> { private final int initialFireCount; private final int initialFirefighterCount; private final int initialCloudCount; + private final int initialMountainCount = 3; private final model.TargetStrategy targetStrategy = new model.TargetStrategy(); private List<Firefighter> firefighters; private Fire fire; private final Map<Position, List<Position>> neighbors = new HashMap<>(); private List<Cloud> clouds; + private List<Mountain> mountains; private final Position[][] positions; 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 initialMountainCount) { this.columnCount = columnCount; this.rowCount = rowCount; this.positions = new Position[rowCount][columnCount]; @@ -44,6 +46,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { public void initializeElements() { firefighters = new ArrayList<>(); clouds = new ArrayList<>(); + mountains = new ArrayList<>(); Set<Position> firePositions = new HashSet<>(); for (int index = 0; index < initialCloudCount; index++) { clouds.add(new Cloud(randomPosition(), neighbors)); @@ -56,6 +59,26 @@ public class FirefighterBoard implements Board<List<ModelElement>> { for (int index = 0; index < initialCloudCount; index++) { clouds.add(new Cloud(randomPosition(), neighbors)); } + for (int i = 0; i < initialMountainCount; i++) { + Position position = randomPosition(); + if (isPositionOccupied(position)) continue; + mountains.add(new Mountain(position)); + } + } + + private boolean isPositionOccupied(Position position) { + // Vérifie si la position est occupée par une montagne + for (Mountain mountain : mountains) { + if (mountain.getPosition().equals(position)) return true; + } + // Vérifie les autres éléments + for (Firefighter firefighter : firefighters) { + if (firefighter.getPosition().equals(position)) return true; + } + for (Cloud cloud : clouds) { + if (cloud.getPosition().equals(position)) return true; + } + return fire.getFirePositions().contains(position); } private Position randomPosition() { @@ -70,6 +93,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> { result.add(ModelElement.CLOUD); } } + for (Mountain mountain : mountains){ + if(mountain.getPosition().equals(position)){ + result.add(ModelElement.MOUNTAIN); + } + } for (Firefighter firefighter : firefighters) if (firefighter.getPosition().equals(position)) @@ -97,12 +125,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> { } // Déplacer les nuages et éteindre les feux for (Cloud cloud : clouds) { - //cloud.moveRandomly(); - //cloud.extinguishFire(fire); cloud.moveAndExtinguishFire(fire); cloud.extinguishFireCloud(fire); - //modifiedPositions.addAll(fire.spreadFire()); - } step++; @@ -157,6 +181,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { case FIRE -> fire.getFirePositions().add(position); case FIREFIGHTER -> firefighters.add(new Firefighter(position)); case CLOUD -> clouds.add(new Cloud(position, neighbors)); + case MOUNTAIN -> mountains.add(new Mountain(position)); } } } -- GitLab