From 00616fcebf992212a0f2a6ba8d5a07c9f2b619f1 Mon Sep 17 00:00:00 2001 From: MEHDI <mehdi.belhachemi@etu-univ.amu.fr> Date: Sun, 24 Nov 2024 18:26:25 +0100 Subject: [PATCH] mehdi and mohamed : adding neighbour class to elements --- src/main/java/model/Fire.java | 16 +++++++++------- src/main/java/model/FireFighter.java | 9 ++++++--- src/main/java/model/FirefighterBoard.java | 11 ++++------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java index 157258a..994ed1e 100644 --- a/src/main/java/model/Fire.java +++ b/src/main/java/model/Fire.java @@ -1,5 +1,6 @@ package model; +import util.Neighbour; import util.Position; import java.util.*; @@ -9,8 +10,8 @@ public class Fire implements Element { private Position position; - - private ModelElement modelElement; + private Neighbour neighbour; + private final ModelElement modelElement; public Fire(Position position){ @@ -34,17 +35,18 @@ public class Fire implements Element { public List<Position> update(Board<List<ModelElement>> firefighterBoard) { + this.neighbour = new Neighbour(firefighterBoard); + List<Position> modifiedPositions = new ArrayList<>(); if (firefighterBoard.stepNumber() % 2 == 0) { Set<Position> newFirePositions = new HashSet<>(); for (Position fire : new HashSet<>(firefighterBoard.getFires().keySet())) { - List<Position> neighboursAvaiable = firefighterBoard.getNeighbor().getNeighbors().get(fire); - neighboursAvaiable.removeAll(firefighterBoard.getObstacles().keySet()); - - newFirePositions.addAll(firefighterBoard.getNeighbor().getNeighbors().get(fire)); - } + List<Position> neighboursAvailable = this.neighbour.getNeighbors().get(fire); + neighboursAvailable.removeAll(firefighterBoard.getObstacles().keySet()); + newFirePositions.addAll(this.neighbour.getNeighbors().get(fire)); + } for (Position position : newFirePositions) { if (!firefighterBoard.getFires().containsKey(position)) { firefighterBoard.getFires().put(position, new Fire(position)); diff --git a/src/main/java/model/FireFighter.java b/src/main/java/model/FireFighter.java index 96fddbf..0eb1614 100644 --- a/src/main/java/model/FireFighter.java +++ b/src/main/java/model/FireFighter.java @@ -1,5 +1,6 @@ package model; +import util.Neighbour; import util.Position; import util.TargetStrategy; @@ -11,7 +12,7 @@ import java.util.Map; public class FireFighter extends Extinguisher { - + private Neighbour neighbour; private final TargetStrategy targetStrategy = new TargetStrategy(); @@ -22,10 +23,12 @@ public class FireFighter extends Extinguisher { public List<Position> update(Board<List<ModelElement>> firefighterBoard){ + this.neighbour = new Neighbour(firefighterBoard); + List<Position> modifiedPositions = new ArrayList<>(); Position currentPosition = this.getPosition(); - Position newPosition = targetStrategy.neighborClosestToFire(currentPosition, firefighterBoard.getFires().keySet(), firefighterBoard.getNeighbor().getNeighbors()); + Position newPosition = targetStrategy.neighborClosestToFire(currentPosition, firefighterBoard.getFires().keySet(), this.neighbour.getNeighbors()); this.setPosition(newPosition); modifiedPositions.add(currentPosition); @@ -33,7 +36,7 @@ public class FireFighter extends Extinguisher { extinguish(firefighterBoard,newPosition); - for (Position neighbor : firefighterBoard.getNeighbor().getNeighbors().get(newPosition)) { + for (Position neighbor : this.neighbour.getNeighbors().get(newPosition)) { extinguish(firefighterBoard,neighbor); modifiedPositions.add(neighbor); } diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index 21f5089..0b31a01 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -9,12 +9,10 @@ import java.util.*; public class FirefighterBoard implements Board<List<ModelElement>> { private final int columnCount; private final int rowCount; - private Map<Position, Fire> fires = new HashMap<>(); private Map<Position, Extinguisher> extinguishers = new HashMap<>(); private Map<Position, Obstacle> obstacles = new HashMap<>(); private final Neighbour neighbour; - private final Position[][] positions; private int step = 0; private final Random randomGenerator = new Random(); @@ -25,7 +23,6 @@ public class FirefighterBoard implements Board<List<ModelElement>> { this.positions = new Position[rowCount][columnCount]; this.neighbour = new Neighbour(this); initializePositions(); - initializeElements(); } @@ -37,7 +34,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> { } } + public void initializeElements() { + obstacles.clear(); + extinguishers.clear(); + fires.clear(); for(ModelElement modelElement : ModelElement.values()){ for(int elementCount = 0; elementCount< modelElement.getInitialNumber();elementCount++){ Position position = randomPosition(); @@ -131,8 +132,6 @@ public class FirefighterBoard implements Board<List<ModelElement>> { } - - @Override public void setState(List<ModelElement> state, Position position) { @@ -140,8 +139,6 @@ public class FirefighterBoard implements Board<List<ModelElement>> { extinguishers.remove(position); extinguishers.get(position).extinguish(this,position); } - - for (ModelElement element : state) { switch (element) { case FIRE -> fires.put(position, new Fire(position)); -- GitLab