From 5d451f57d0f58f4fcf6b10c301d1d786abbc3ca0 Mon Sep 17 00:00:00 2001
From: Maazouz <ilyas.maazouz@etu.univ-amu.fr>
Date: Wed, 22 Nov 2023 21:47:25 +0100
Subject: [PATCH] cbc

---
 src/main/java/controller/Controller.java |  5 ++---
 src/main/java/newmodel/Fboard.java       | 23 +++++++++++------------
 src/main/java/newmodel/Fire.java         | 15 ++++-----------
 src/main/java/newmodel/FireFighter.java  | 11 +++++------
 src/main/java/newmodel/item.java         |  1 -
 5 files changed, 22 insertions(+), 33 deletions(-)

diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index d31718d..918bab8 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -151,11 +151,10 @@ public class Controller {
                                 int rowCount, int initialFireCount, int initialFirefighterCount) {
     grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
     List<item> items= new ArrayList<>();
-    Fboard b=new Fboard(columnCount,rowCount);
     List<item> list= new ArrayList<>();
-    list.add(new Fire(initialFireCount,b));
+    list.add(new Fire(initialFireCount));
     list.add(new FireFighter(initialFirefighterCount,b));
-    b.setItems(list);
+    Fboard b=new Fboard(columnCount,rowCount,items);
     this.setModel(b);
     repaintGrid();
   }
diff --git a/src/main/java/newmodel/Fboard.java b/src/main/java/newmodel/Fboard.java
index 059764b..39b43df 100644
--- a/src/main/java/newmodel/Fboard.java
+++ b/src/main/java/newmodel/Fboard.java
@@ -7,28 +7,27 @@ import java.util.*;
 
 public class Fboard {
 
-    protected final int columnCount;
-    protected final int rowCount;
+    protected static int columnCount;
+    protected static int rowCount;
     private int step = 0;
 
     private List<item> items;
 
-    public Fboard(int columnCount, int rowCount) {
-        this.columnCount = columnCount;
-        this.rowCount = rowCount;
+    public Fboard(int columnCount, int rowCount,List<item> item) {
+        this.items=item;
+        Fboard.columnCount = columnCount;
+        Fboard.rowCount = rowCount;
     }
 
     public int rowCount() {
         return rowCount;
     }
-    public void setItems(List<item> s){
-        this.items=s;
-    }
 
     public int columnCount() {
         return columnCount;
     }
 
+    // Visitor for ID can be added
     public List<Position> updateToNextGeneration() {
         List<Position> result = new ArrayList<>();
         for(item item : items){
@@ -79,12 +78,12 @@ public class Fboard {
         Fire x = null;
         for (item e : items) {
             if(e.getID()==0){
-                x= (Fire) e;
+                x = (Fire) e;
             }
         }
         return x;
     }
-    public List<Position> neighbors(Position position) {
+    public static List<Position> neighbors(Position position) {
         List<Position> list = new ArrayList<>();
         if (position.row() > 0) list.add(new Position(position.row() - 1, position.column()));
         if (position.column() > 0) list.add(new Position(position.row(), position.column() - 1));
@@ -93,7 +92,7 @@ public class Fboard {
         return list;
     }
 
-    public Position neighborClosestToFire(Position position) {
+    public static Position neighborClosestToFire(Position position) {
         Set<Position> seen = new HashSet<>();
         HashMap<Position, Position> firstMove = new HashMap<>();
         Queue<Position> toVisit = new LinkedList<>(neighbors(position)); //Queue is initialised with the neighbors of position
@@ -101,7 +100,7 @@ public class Fboard {
             firstMove.put(initialMove, initialMove);
         while (!toVisit.isEmpty()) {
             Position current = toVisit.poll();
-            if (this.getFire().getPositions().contains(current))
+            if (getFire().getPositions().contains(current))
                 return firstMove.get(current);
             for (Position adjacent : neighbors(current)) {
                 if (seen.contains(adjacent)) continue;
diff --git a/src/main/java/newmodel/Fire.java b/src/main/java/newmodel/Fire.java
index 3e86218..9bcd911 100644
--- a/src/main/java/newmodel/Fire.java
+++ b/src/main/java/newmodel/Fire.java
@@ -13,12 +13,10 @@ public class Fire implements item{
     private ModelElement state;
     private final Random randomGenerator = new Random();
 
-    private final Fboard board;
     private final int ID=0;
 
-    public Fire(int initialFireCount,Fboard b) {
-        this.initialFireCount = initialFireCount;
-        this.board=b;
+    public Fire(int initialFireCount) {
+        this.initialFireCount = initialFireCount;this.state=ModelElement.FIRE;
     }
 
 
@@ -26,7 +24,7 @@ public class Fire implements item{
         List<Position> result = new ArrayList<>();
             List<Position> newFirePositions = new ArrayList<>();
             for (Position fire : firePositions) {
-                newFirePositions.addAll(board.neighbors(fire));
+                newFirePositions.addAll(Fboard.neighbors(fire));
             }
             firePositions.addAll(newFirePositions);
             result.addAll(newFirePositions);
@@ -35,11 +33,6 @@ public class Fire implements item{
 
     }
 
-    public void setState() {
-        state=ModelElement.FIRE;
-    }
-
-
     public ModelElement getState() {
         return state;
     }
@@ -60,7 +53,7 @@ public class Fire implements item{
     }
 
     public Position randomPosition() {
-        return new Position(randomGenerator.nextInt(board.rowCount), randomGenerator.nextInt(board.columnCount));
+        return new Position(randomGenerator.nextInt(Fboard.rowCount), randomGenerator.nextInt(Fboard.columnCount));
     }
 
     public void extinguish(Position position) {
diff --git a/src/main/java/newmodel/FireFighter.java b/src/main/java/newmodel/FireFighter.java
index c42ee69..66bf4b3 100644
--- a/src/main/java/newmodel/FireFighter.java
+++ b/src/main/java/newmodel/FireFighter.java
@@ -7,13 +7,11 @@ import java.util.Random;
 
 public class FireFighter extends Extinguisher {
     private ModelElement state;
-    private final Fboard board;
     private List<Position> firefighterPositions;
     private final Random randomGenerator = new Random();
 
     private final int initialFirefighterCount;
-    public FireFighter(int initialFirefighterCount,Fboard b){
-        this.board=b;
+    public FireFighter(int initialFirefighterCount){
         this.initialFirefighterCount=initialFirefighterCount;
     }
 
@@ -22,12 +20,12 @@ public class FireFighter extends Extinguisher {
             List<Position> result = new ArrayList<>();
             List<Position> firefighterNewPositions = new ArrayList<>();
             for (Position firefighterPosition : firefighterPositions) {
-                Position newFirefighterPosition = board.neighborClosestToFire(firefighterPosition);
+                Position newFirefighterPosition = Fboard.neighborClosestToFire(firefighterPosition);
                 firefighterNewPositions.add(newFirefighterPosition);
                 extinguish(newFirefighterPosition);
                 result.add(firefighterPosition);
                 result.add(newFirefighterPosition);
-                List<Position> neighborFirePositions = board.neighbors(newFirefighterPosition).stream()
+                List<Position> neighborFirePositions = Fboard.neighbors(newFirefighterPosition).stream()
                         .filter(board.getFire().getPositions()::contains).toList(); //this code create a list filtred with only the fire positions that are close to the newfirefighter position
                 for(Position firePosition : neighborFirePositions) //and exist in the firepositions list also
                     extinguish(firePosition);
@@ -63,7 +61,7 @@ public class FireFighter extends Extinguisher {
             firefighterPositions.add(randomPosition());
     }
     private Position randomPosition() {
-        return new Position(randomGenerator.nextInt(board.rowCount), randomGenerator.nextInt(board.columnCount));
+        return new Position(randomGenerator.nextInt(Fboard.rowCount), randomGenerator.nextInt(Fboard.columnCount));
     }
 
     public List<Position> getPositions(){
@@ -72,3 +70,4 @@ public class FireFighter extends Extinguisher {
 
 }
 
+
diff --git a/src/main/java/newmodel/item.java b/src/main/java/newmodel/item.java
index d4d53c7..11735f5 100644
--- a/src/main/java/newmodel/item.java
+++ b/src/main/java/newmodel/item.java
@@ -7,7 +7,6 @@ import java.util.List;
 
 public interface item {
     public List<Position> update();
-    void setState();
     public ModelElement getState();
 
     public int getID();
-- 
GitLab