From bc0be0e0b8824086f1e3d84bf840a514fc45a5c5 Mon Sep 17 00:00:00 2001
From: mohamed Hebbache <mohamed.hebbache@etu.univ-amu.fr>
Date: Tue, 14 Nov 2023 21:54:13 +0100
Subject: [PATCH] Initialise Fire and FireFighter

---
 src/main/java/model/BoardElement.java         |  1 -
 src/main/java/model/ExtenguishFire/Cloud.java |  4 --
 .../model/ExtenguishFire/FireFighter.java     |  4 --
 .../model/ExtenguishFire/FireFighters.java    | 11 ----
 src/main/java/model/ExtinguishFire/Cloud.java |  4 ++
 .../model/ExtinguishFire/ExtinguishFire.java  | 16 +++++
 .../model/ExtinguishFire/FireFighter.java     | 63 +++++++++++++++++++
 .../MotorizedFireFighter.java                 |  2 +-
 src/main/java/model/FirefighterBoard.java     |  1 -
 src/main/java/model/Flammable/Fire.java       | 61 +++++++-----------
 .../Flammable/{Fires.java => Flammable.java}  |  9 +--
 src/main/java/model/GameBoard.java            | 57 +++++++++++++++++
 src/main/java/model/Obstacle/Obstacles.java   |  3 +-
 .../java/model/Visitor/CrossMountain.java     |  4 +-
 src/main/java/model/Visitor/CrossRoad.java    |  4 +-
 src/main/java/model/Visitor/FireFinder.java   |  4 +-
 src/main/java/model/Visitor/Visitor.java      |  5 +-
 17 files changed, 176 insertions(+), 77 deletions(-)
 delete mode 100644 src/main/java/model/ExtenguishFire/Cloud.java
 delete mode 100644 src/main/java/model/ExtenguishFire/FireFighter.java
 delete mode 100644 src/main/java/model/ExtenguishFire/FireFighters.java
 create mode 100644 src/main/java/model/ExtinguishFire/Cloud.java
 create mode 100644 src/main/java/model/ExtinguishFire/ExtinguishFire.java
 create mode 100644 src/main/java/model/ExtinguishFire/FireFighter.java
 rename src/main/java/model/{ExtenguishFire => ExtinguishFire}/MotorizedFireFighter.java (56%)
 rename src/main/java/model/Flammable/{Fires.java => Flammable.java} (55%)
 create mode 100644 src/main/java/model/GameBoard.java

diff --git a/src/main/java/model/BoardElement.java b/src/main/java/model/BoardElement.java
index 912a524..d81bfbd 100644
--- a/src/main/java/model/BoardElement.java
+++ b/src/main/java/model/BoardElement.java
@@ -12,7 +12,6 @@ import java.util.Set;
 public interface BoardElement {
 
     Color getColor();
-    void setColor(Color color);
     Boolean accept(Visitor visitor);
     void initialize(int initialElementCount, HashMap<Position, ArrayList<BoardElement>> elementPosition);
 }
diff --git a/src/main/java/model/ExtenguishFire/Cloud.java b/src/main/java/model/ExtenguishFire/Cloud.java
deleted file mode 100644
index 8301d6e..0000000
--- a/src/main/java/model/ExtenguishFire/Cloud.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package model.ExtenguishFire;
-
-public class Cloud {
-}
diff --git a/src/main/java/model/ExtenguishFire/FireFighter.java b/src/main/java/model/ExtenguishFire/FireFighter.java
deleted file mode 100644
index b9d56c6..0000000
--- a/src/main/java/model/ExtenguishFire/FireFighter.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package model.ExtenguishFire;
-
-public class FireFighter {
-}
diff --git a/src/main/java/model/ExtenguishFire/FireFighters.java b/src/main/java/model/ExtenguishFire/FireFighters.java
deleted file mode 100644
index 91e7ccf..0000000
--- a/src/main/java/model/ExtenguishFire/FireFighters.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package model.ExtenguishFire;
-
-import model.BoardElement;
-import util.Position;
-
-import java.util.List;
-
-public interface FireFighters extends BoardElement {
-    List<Position> updateFirefighters();
-    boolean accept();
-}
diff --git a/src/main/java/model/ExtinguishFire/Cloud.java b/src/main/java/model/ExtinguishFire/Cloud.java
new file mode 100644
index 0000000..5fa1c31
--- /dev/null
+++ b/src/main/java/model/ExtinguishFire/Cloud.java
@@ -0,0 +1,4 @@
+package model.ExtinguishFire;
+
+public class Cloud {
+}
diff --git a/src/main/java/model/ExtinguishFire/ExtinguishFire.java b/src/main/java/model/ExtinguishFire/ExtinguishFire.java
new file mode 100644
index 0000000..077f3cc
--- /dev/null
+++ b/src/main/java/model/ExtinguishFire/ExtinguishFire.java
@@ -0,0 +1,16 @@
+package model.ExtinguishFire;
+
+import model.BoardElement;
+import util.Position;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+public interface ExtinguishFire extends BoardElement {
+
+    void initialize(int initialFireFighterCount, HashMap<Position, ArrayList<BoardElement>> elementPosition);
+
+    List<Position> updateFirefighters();
+
+}
diff --git a/src/main/java/model/ExtinguishFire/FireFighter.java b/src/main/java/model/ExtinguishFire/FireFighter.java
new file mode 100644
index 0000000..1cbeb26
--- /dev/null
+++ b/src/main/java/model/ExtinguishFire/FireFighter.java
@@ -0,0 +1,63 @@
+package model.ExtinguishFire;
+
+import javafx.scene.paint.Color;
+import model.BoardElement;
+import model.FirefighterBoard;
+import model.Flammable.Fire;
+import model.Visitor.FireFinder;
+import model.Visitor.Visitor;
+import util.Position;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+public class FireFighter implements ExtinguishFire{
+    Color color;
+    public FireFighter(Color color){
+        this.color=color;
+    }
+    @Override
+    public Color getColor() {
+        return color;
+    }
+
+    @Override
+    public Boolean accept(Visitor visitor) {
+        return visitor.visit(this);
+    }
+
+    @Override
+    public void initialize(int initialFireFighterCount, HashMap<Position, ArrayList<BoardElement>> elementPosition) {
+        FireFinder fireFinder=new FireFinder();
+        Position position = FirefighterBoard.randomPosition();
+        boolean canInitialise;
+        for (int index = 0; index < initialFireFighterCount; index++) {
+            if(elementPosition.containsKey(position)) {
+                for (;;) {
+                    canInitialise = true;
+                    for (BoardElement element : elementPosition.get(position)) {
+                        if (element.accept(fireFinder)) {
+                            canInitialise=false;
+                            break;
+                        }
+                    }
+                    if(canInitialise){
+                        break;
+                    }
+                    position = FirefighterBoard.randomPosition();
+                }
+                elementPosition.get(position).add(new Fire(Color.BLUE));
+                continue;
+            }
+            ArrayList<BoardElement> boardElements = new ArrayList<>();
+            boardElements.add(new Fire(Color.BLUE));
+            elementPosition.put(position,boardElements);
+        }
+    }
+
+    @Override
+    public List<Position> updateFirefighters() {
+        return null;
+    }
+}
diff --git a/src/main/java/model/ExtenguishFire/MotorizedFireFighter.java b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java
similarity index 56%
rename from src/main/java/model/ExtenguishFire/MotorizedFireFighter.java
rename to src/main/java/model/ExtinguishFire/MotorizedFireFighter.java
index e202215..ef4d68e 100644
--- a/src/main/java/model/ExtenguishFire/MotorizedFireFighter.java
+++ b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java
@@ -1,4 +1,4 @@
-package model.ExtenguishFire;
+package model.ExtinguishFire;
 
 public class MotorizedFireFighter {
 }
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index 2d0b030..7fa8e1d 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -10,7 +10,6 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
    static  int rowCount;
   private final int initialFireCount;
   private final int initialFirefighterCount;
-  protected HashMap<Position,ArrayList<BoardElement>> elementPosition;
   private List<Position> firefighterPositions;
   private Set<Position> firePositions;
   private int step = 0;
diff --git a/src/main/java/model/Flammable/Fire.java b/src/main/java/model/Flammable/Fire.java
index 621ab15..0d1f6ac 100644
--- a/src/main/java/model/Flammable/Fire.java
+++ b/src/main/java/model/Flammable/Fire.java
@@ -9,12 +9,10 @@ import util.Position;
 
 import java.util.*;
 
-public class Fire implements Fires{
+public class Fire implements Flammable{
 
-    private Color color;
+    private final Color color;
 
-    public Fire(){
-    }
     public Fire(Color color){
         this.color = color;
     }
@@ -24,11 +22,6 @@ public class Fire implements Fires{
         return this.color;
     }
 
-    @Override
-    public void setColor(Color color) {
-        this.color = color;
-    }
-
     @Override
     public Boolean accept(Visitor visitor){
         return visitor.visit(this);
@@ -38,42 +31,34 @@ public class Fire implements Fires{
     public void initialize(int initialFireCount, HashMap<Position, ArrayList<BoardElement>> elementPosition) {
         FireFinder fireFinder=new FireFinder();
         Position position = FirefighterBoard.randomPosition();
-        int index;
-        for ( index = 0; index < initialFireCount; index++) {
-            if(elementPosition.containsKey(position)  ) {
-                for (BoardElement element : elementPosition.get(position)) {
-                    if (!element.accept(fireFinder)) {
+        boolean canInitialise;
+        for (int index = 0; index < initialFireCount; index++) {
+            if(elementPosition.containsKey(position)) {
+                 for (;;) {
+                    canInitialise=true;
+                    for (BoardElement element : elementPosition.get(position)) {
+                        if (element.accept(fireFinder)) {
+                            canInitialise=false;
+                            break;
+                        }
+                    }
+                    if(canInitialise){
                         break;
                     }
-                }
-            if(index==-1){
-                elementPosition.get(position).add(new Fire());
+                 position = FirefighterBoard.randomPosition();
+                 }
+                 elementPosition.get(position).add(new Fire(Color.RED));
+                 continue;
             }
+            ArrayList<BoardElement> boardElements = new ArrayList<>();
+            boardElements.add(new Fire(Color.RED));
+            elementPosition.put(position,boardElements);
             }
-            else{
-                ArrayList<BoardElement> boardElements = new ArrayList<>();
-                boardElements.add(new Fire());
-                elementPosition.put(position,boardElements);
-            }
-        }
     }
 
-            /*if(elementPosition.containsKey(position) &&  ){
-                continue;
-            }
-            else if(elementPosition.containsKey(position)){
-                elementPosition.get(position).add(fire);
-            }
-            else{
-                ArrayList<BoardElement> boardElements = new ArrayList<>();
-                boardElements.add(fire);
-                elementPosition.put(position,boardElements);
-            }
-        }
-    }*/
-
     @Override
-    public List<Position> updateFires() {
+    public List<Position> updateFlammable() {
         return null;
     }
+
 }
diff --git a/src/main/java/model/Flammable/Fires.java b/src/main/java/model/Flammable/Flammable.java
similarity index 55%
rename from src/main/java/model/Flammable/Fires.java
rename to src/main/java/model/Flammable/Flammable.java
index b17a550..2040c73 100644
--- a/src/main/java/model/Flammable/Fires.java
+++ b/src/main/java/model/Flammable/Flammable.java
@@ -1,20 +1,15 @@
 package model.Flammable;
 
-import javafx.scene.paint.Color;
 import model.BoardElement;
-import model.Visitor.Visitor;
 import util.Position;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
-public interface Fires extends BoardElement{
-    void setColor(Color color);
-
-    Boolean accept(Visitor visitor);
+public interface Flammable extends BoardElement{
 
     void initialize(int initialFireCount, HashMap<Position, ArrayList<BoardElement>> elementPosition);
 
-    List<Position> updateFires();
+    List<Position> updateFlammable();
 }
diff --git a/src/main/java/model/GameBoard.java b/src/main/java/model/GameBoard.java
new file mode 100644
index 0000000..a5ace1e
--- /dev/null
+++ b/src/main/java/model/GameBoard.java
@@ -0,0 +1,57 @@
+package model;
+
+import util.Position;
+
+import java.util.*;
+
+public class GameBoard implements Board{
+    static  int columnCount;
+    static  int rowCount;
+    private final int initialFireCount;
+    private final int initialFirefighterCount;
+    private List<Position> firefighterPositions;
+    private Set<Position> firePositions;
+    private int step = 0;
+    static Random randomGenerator = new Random();
+    public HashMap<Position, ArrayList<BoardElement>> elementPosition;
+
+    public GameBoard(int initialFireCount, int initialFirefighterCount) {
+        this.initialFireCount = initialFireCount;
+        this.initialFirefighterCount = initialFirefighterCount;
+    }
+
+    @Override
+    public Object getState(Position position) {
+        return null;
+    }
+
+    @Override
+    public void setState(Object state, Position position) {
+
+    }
+
+    @Override
+    public int rowCount() {
+        return rowCount;
+    }
+
+    @Override
+    public int columnCount() {
+        return columnCount;
+    }
+
+    @Override
+    public List<Position> updateToNextGeneration() {
+        return null;
+    }
+
+    @Override
+    public void reset() {
+
+    }
+
+    @Override
+    public int stepNumber() {
+        return step;
+    }
+}
diff --git a/src/main/java/model/Obstacle/Obstacles.java b/src/main/java/model/Obstacle/Obstacles.java
index fc8290a..c1cc3cd 100644
--- a/src/main/java/model/Obstacle/Obstacles.java
+++ b/src/main/java/model/Obstacle/Obstacles.java
@@ -6,5 +6,6 @@ import util.Position;
 import java.util.List;
 
 public interface Obstacles extends BoardElement {
-    boolean accept();
+
+
 }
diff --git a/src/main/java/model/Visitor/CrossMountain.java b/src/main/java/model/Visitor/CrossMountain.java
index 288af45..bc8097d 100644
--- a/src/main/java/model/Visitor/CrossMountain.java
+++ b/src/main/java/model/Visitor/CrossMountain.java
@@ -1,7 +1,7 @@
 package model.Visitor;
 
-import model.ExtenguishFire.FireFighter;
-import model.ExtenguishFire.MotorizedFireFighter;
+import model.ExtinguishFire.FireFighter;
+import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
 import model.Obstacle.Mountain;
 import model.Obstacle.Road;
diff --git a/src/main/java/model/Visitor/CrossRoad.java b/src/main/java/model/Visitor/CrossRoad.java
index cf53acf..4a0f710 100644
--- a/src/main/java/model/Visitor/CrossRoad.java
+++ b/src/main/java/model/Visitor/CrossRoad.java
@@ -1,7 +1,7 @@
 package model.Visitor;
 
-import model.ExtenguishFire.FireFighter;
-import model.ExtenguishFire.MotorizedFireFighter;
+import model.ExtinguishFire.FireFighter;
+import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
 import model.Obstacle.Mountain;
 import model.Obstacle.Road;
diff --git a/src/main/java/model/Visitor/FireFinder.java b/src/main/java/model/Visitor/FireFinder.java
index 7e7ce43..3718c61 100644
--- a/src/main/java/model/Visitor/FireFinder.java
+++ b/src/main/java/model/Visitor/FireFinder.java
@@ -1,7 +1,7 @@
 package model.Visitor;
 
-import model.ExtenguishFire.FireFighter;
-import model.ExtenguishFire.MotorizedFireFighter;
+import model.ExtinguishFire.FireFighter;
+import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
 import model.Obstacle.Mountain;
 import model.Obstacle.Road;
diff --git a/src/main/java/model/Visitor/Visitor.java b/src/main/java/model/Visitor/Visitor.java
index da5b1a2..5a324d1 100644
--- a/src/main/java/model/Visitor/Visitor.java
+++ b/src/main/java/model/Visitor/Visitor.java
@@ -1,9 +1,8 @@
 package model.Visitor;
 
-import model.ExtenguishFire.FireFighter;
-import model.ExtenguishFire.MotorizedFireFighter;
+import model.ExtinguishFire.FireFighter;
+import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
-import model.Flammable.Fires;
 import model.Obstacle.Mountain;
 import model.Obstacle.Road;
 
-- 
GitLab