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