From f830f8ba97abaa7febfc07b8d2f3e6f9dc33d246 Mon Sep 17 00:00:00 2001
From: b22015516 <mehdi.belhachemi@etu.univ-amu.fr>
Date: Tue, 19 Nov 2024 10:28:39 +0100
Subject: [PATCH] fixing problems

---
 src/main/java/model/Fire.java             |  20 ++--
 src/main/java/model/FireFighter.java      |  20 ++--
 src/main/java/model/FirefighterBoard.java | 112 ++++++++++++----------
 src/main/java/module-info.java            |   1 +
 4 files changed, 84 insertions(+), 69 deletions(-)

diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java
index 3521353..44b67bd 100644
--- a/src/main/java/model/Fire.java
+++ b/src/main/java/model/Fire.java
@@ -2,25 +2,29 @@ package model;
 
 import util.Position;
 
-import java.util.Set;
+
 
 public class Fire {
 
-    private Position firePositions;
+    private Position position;
+
 
     public Fire(Position position){
-        this.firePositions = position;
+        this.position = position;
     }
 
-    public void setFirePosition(Position postion){
-        this.firePositions = postion;
+
+    public Position getPosition() {
+        return position;
     }
 
-    public Position getFirePosition() {
-        return firePositions;
+    public void setPosition(Position position) {
+        this.position = position;
     }
 
 
 
 
-}
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/model/FireFighter.java b/src/main/java/model/FireFighter.java
index 96d9f7f..a6eb751 100644
--- a/src/main/java/model/FireFighter.java
+++ b/src/main/java/model/FireFighter.java
@@ -2,23 +2,27 @@ package model;
 
 import util.Position;
 
-import java.util.List;
 
 public class FireFighter {
 
+    private Position position;
 
-    private Position FireFighterPosition;
 
     public FireFighter(Position position){
-        this.FireFighterPosition = position;
+        this.position = position;
     }
 
 
-    public void setFireFighterPosition(Position postion){
-        this.FireFighterPosition = postion;
+    public Position getPosition() {
+        return position;
     }
 
-    public Position getFireFighterPosition() {
-        return FireFighterPosition;
+    public void setPosition(Position position) {
+        this.position = position;
     }
-}
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index 9922db3..9207e71 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -1,22 +1,19 @@
 package model;
 
-import util.TargetStrategy;
-
-
 import util.Position;
+import util.TargetStrategy;
 
 import java.util.*;
 
 
-
 public class FirefighterBoard implements Board<List<ModelElement>> {
   private final int columnCount;
   private final int rowCount;
-  private final int initialFirefighterCount;
   private final int initialFireCount;
-  private List<FireFighter> firefighter;
-  private Set<Fire> fire;
+  private final int initialFirefighterCount;
   private final TargetStrategy targetStrategy = new TargetStrategy();
+  private List<FireFighter> firefighters;
+  private Set<Fire> fires;
   private Map<Position, List<Position>> neighbors = new HashMap();
   private final Position[][] positions;
   private int step = 0;
@@ -44,14 +41,12 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
   }
 
   public void initializeElements() {
-    firefighter = new ArrayList<>();
-    fire = new HashSet<>();
-    for (int index = 0; index < initialFireCount; index++) {
-      fire.add(new Fire(randomPosition()));
-    }
-
+    firefighters = new ArrayList<>();
+    fires = new HashSet<>();
+    for (int index = 0; index < initialFireCount; index++)
+      fires.add(new Fire(randomPosition()));
     for (int index = 0; index < initialFirefighterCount; index++)
-      firefighter.add(new FireFighter(randomPosition()));
+      firefighters.add(new FireFighter(randomPosition()));
   }
 
   private Position randomPosition() {
@@ -61,15 +56,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
   @Override
   public List<ModelElement> getState(Position position) {
     List<ModelElement> result = new ArrayList<>();
-    for (FireFighter firefighter : firefighter)
-      if (firefighter.getFireFighterPosition().equals(position))
+    for (FireFighter firefighter : firefighters)
+      if (firefighter.getPosition().equals(position))
         result.add(ModelElement.FIREFIGHTER);
 
-    for (Fire fire : fire) {
-      if (fire.getFirePosition().equals(position)) {
-        result.add(ModelElement.FIRE);
-      }
-    }
+    if (this.getFirePositions(fires).contains(position))
+      result.add(ModelElement.FIRE);
+
     return result;
   }
 
@@ -94,14 +87,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     List<Position> modifiedPositions = new ArrayList<>();
     if (step % 2 == 0) {
       List<Position> newFirePositions = new ArrayList<>();
-      for (Fire fire : fire) {
+      for (Position fire : getFirePositions(this.fires)) {
         newFirePositions.addAll(neighbors.get(fire));
       }
-
-      for (Position position : newFirePositions) {
-        fire.add(new Fire(position));
-      }
-
+      this.getFirePositions(fires).addAll(newFirePositions);
       modifiedPositions.addAll(newFirePositions);
     }
     return modifiedPositions;
@@ -115,26 +104,26 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
 
   private List<Position> updateFirefighters() {
     List<Position> modifiedPosition = new ArrayList<>();
-    List<FireFighter> firefighters = new ArrayList<>();
-    List<Position> firePositions = new ArrayList<>();
-    for(Fire fire: fire){
-      firePositions.add(fire.getFirePosition());
-    }
-    for (FireFighter firefighter: firefighter) {
+    List<Position> firefighterNewPositions = new ArrayList<>();
+    for (Position firefighterPosition : this.getFireFighterPositions(this.firefighters)) {
       Position newFirefighterPosition =
-              targetStrategy.neighborClosestToFire(firefighter.getFireFighterPosition(),
-                      firePositions, neighbors);
-      firefighters.add(firefighter);
+              targetStrategy.neighborClosestToFire(firefighterPosition,
+                      this.getFirePositions(fires), neighbors);
+      firefighterNewPositions.add(newFirefighterPosition);
       extinguish(newFirefighterPosition);
-      modifiedPosition.add(firefighter.getFireFighterPosition());
+      modifiedPosition.add(firefighterPosition);
       modifiedPosition.add(newFirefighterPosition);
       List<Position> neighborFirePositions = neighbors.get(newFirefighterPosition).stream()
-              .filter(firePositions::contains).toList();
+              .filter(this.getFirePositions(fires)::contains).toList();
       for (Position firePosition : neighborFirePositions)
         extinguish(firePosition);
       modifiedPosition.addAll(neighborFirePositions);
     }
-    firefighter = firefighters;
+    ArrayList<FireFighter> newFireFighters = new ArrayList<>();
+    for(Position position : firefighterNewPositions){
+      newFireFighters.add(new FireFighter(position));
+    }
+    firefighters = newFireFighters;
     return modifiedPosition;
   }
 
@@ -145,8 +134,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
   }
 
   private void extinguish(Position position) {
-    fire.remove(position);
-
+    for(Fire fire: fires){
+      if(fire.getPosition().equals(position)){
+        fires.remove(fire);
+      }
+    }
   }
 
 
@@ -154,24 +146,38 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
   public void setState(List<ModelElement> state, Position position) {
     extinguish(position);
     for (; ; ) {
-
-      for (FireFighter fireFighter : firefighter) {
-        if (fireFighter.getFireFighterPosition().equals(position)) {
-          firefighter.remove(position);
-          break;
-        }
+      if (!getFireFighterPositions(this.firefighters).remove(position)) break;
+    }
+    for (ModelElement element : state) {
+      switch (element) {
+        case FIRE -> fires.add(new Fire(position));
+        case FIREFIGHTER -> firefighters.add(new FireFighter(position));
       }
+    }
+  }
 
 
-      for (ModelElement element : state) {
-        switch (element) {
-          case FIRE -> fire.add(new Fire(position));
-          case FIREFIGHTER -> firefighter.add(new FireFighter(position));
-        }
-      }
+
+
+  public Set<Position> getFirePositions(Set<Fire> fireSet){
+    Set<Position> firePositions = new HashSet<>();
+    for(Fire fire : fireSet){
+      firePositions.add(fire.getPosition());
+    }
+    return firePositions;
+  }
+
+
+  public ArrayList<Position> getFireFighterPositions(List<FireFighter> fireFighterList){
+    ArrayList<Position> fireFighterPositions = new ArrayList<>();
+    for(FireFighter fireFighter : fireFighterList){
+      fireFighterPositions.add(fireFighter.getPosition());
     }
+    return fireFighterPositions;
   }
 
 
 
+
+
 }
\ No newline at end of file
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index 4c36d97..7317081 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -4,5 +4,6 @@ module firefighter {
   requires javafx.graphics;
   opens controller to javafx.fxml;
   exports app;
+  exports view;
   opens app to javafx.fxml;
 }
-- 
GitLab