From 6e4fed7dbdc037f1ae2444a53c604e5333b7a3ea Mon Sep 17 00:00:00 2001
From: Celia AREZKI <celia.arezki.1@etu.univ-amu.fr>
Date: Sun, 17 Nov 2024 21:31:23 +0100
Subject: [PATCH] modify the class FirefighterBoard

---
 src/main/java/controller/Controller.java  |  2 +-
 src/main/java/model/Board.java            | 55 +----------------------
 src/main/java/model/BoardBehavior.java    |  2 +-
 src/main/java/model/BoardProperties.java  |  2 +-
 src/main/java/model/FireManager.java      |  1 +
 src/main/java/model/FirefighterBoard.java | 22 +++++----
 6 files changed, 15 insertions(+), 69 deletions(-)

diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index 2a60897..55cd329 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -40,7 +40,7 @@ public class Controller {
   @FXML
   private Grid<ViewElement> grid;
   private Timeline timeline;
-  private Board<List<ModelElement>> board;
+  private FirefighterBoard board;
 
   @FXML
   private void initialize() {
diff --git a/src/main/java/model/Board.java b/src/main/java/model/Board.java
index bb089a4..e671eb0 100644
--- a/src/main/java/model/Board.java
+++ b/src/main/java/model/Board.java
@@ -4,62 +4,9 @@ import util.Position;
 
 import java.util.List;
 
-/**
- * This interface represents a generic board for modeling various state-based systems.
- *
- * @param <S> The type of state represented on the board.
- */
-public interface Board<S> {
-
-  /**
-   * Get the state of the board at a specific position.
-   *
-   * @param position The position on the board for which to retrieve the state.
-   * @return The state at the specified position.
-   */
-  S getState(Position position);
-
-  /**
-   * Set the state of a specific position on the board to the specified state.
-   *
-   * @param state The state to set for the given position.
-   * @param position The position on the board for which to set the state.
-   */
-  void setState(S state, Position position);
 
-  /**
-   * Get the number of rows in the board.
-   *
-   * @return The number of rows in the board.
-   */
-  int rowCount();
-
-  /**
-   * Get the number of columns in the board.
-   *
-   * @return The number of columns in the board.
-   */
-  int columnCount();
-
-  /**
-   * Update the board to its next generation or state. This method may modify the
-   * internal state of the board and return a list of positions that have changed
-   * during the update.
-   *
-   * @return A list of positions that have changed during the update.
-   */
-  List<Position> updateToNextGeneration();
+public interface Board<S> {
 
-  /**
-   * Reset the board to its initial state.
-   */
-  void reset();
 
-  /**
-   * Get the current step number or generation of the board.
-   *
-   * @return The current step number or generation.
-   */
-  int stepNumber();
 }
 
diff --git a/src/main/java/model/BoardBehavior.java b/src/main/java/model/BoardBehavior.java
index be7af53..0ce2952 100644
--- a/src/main/java/model/BoardBehavior.java
+++ b/src/main/java/model/BoardBehavior.java
@@ -3,7 +3,7 @@ package model;
 import util.Position;
 import java.util.List;
 
-public interface BoardBehavior<S> {
+public interface BoardBehavior<S> extends Board<S>{
     /**
      * Get the current step number or generation of the board.
      *
diff --git a/src/main/java/model/BoardProperties.java b/src/main/java/model/BoardProperties.java
index d8b02df..ec37435 100644
--- a/src/main/java/model/BoardProperties.java
+++ b/src/main/java/model/BoardProperties.java
@@ -9,7 +9,7 @@ import java.util.List;
  *
  * @param <S> Le type d'état utilisé pour les éléments du tableau.
  */
-public interface BoardProperties<S> {
+public interface BoardProperties<S> extends Board<S>  {
     /**
      * Retourne le nombre de lignes du tableau.
      *
diff --git a/src/main/java/model/FireManager.java b/src/main/java/model/FireManager.java
index b353713..71d9659 100644
--- a/src/main/java/model/FireManager.java
+++ b/src/main/java/model/FireManager.java
@@ -13,6 +13,7 @@ public class FireManager implements FireBehavior, FireProperties{
     // Initialize fire positions randomly
 
     public void initializeFires(int fireCount, int rowCount, int columnCount, Random random) {
+
         firePositions.clear();
         for (int i = 0; i < fireCount; i++) {
             firePositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index 13bf310..4f5681f 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -5,7 +5,7 @@ import util.TargetStrategy;
 import java.util.*;
 
 
-public class FirefighterBoard implements BoardBehavior<List<ModelElement>> ,BoardProperties<List<ModelElement>>{
+public class FirefighterBoard  implements BoardBehavior<List<ModelElement>> ,BoardProperties<List<ModelElement>>{
   private final int columnCount;
   private final int rowCount;
   private final int initialFireCount;
@@ -13,8 +13,7 @@ public class FirefighterBoard implements BoardBehavior<List<ModelElement>> ,Boar
 
   private final FireManager fireManager;
   private final FirefighterManager firefighterManager;
-  private List<Position> firefighterPositions;
-  private Set<Position> firePositions;
+
   private final Position[][] positions;
   private int step = 0;
   private final Map<Position, List<Position>> neighbors = new HashMap<>();
@@ -28,7 +27,7 @@ public class FirefighterBoard implements BoardBehavior<List<ModelElement>> ,Boar
     this.positions = new Position[rowCount][columnCount];
     initializePositions();
     initializeNeighbors();
-    // Initialize managers
+    // Initialize manager
     this.fireManager = new FireManager(new HashSet<>());
     this.firefighterManager = new FirefighterManager(new ArrayList<>(), fireManager);
 
@@ -67,7 +66,6 @@ public class FirefighterBoard implements BoardBehavior<List<ModelElement>> ,Boar
     for (int index = 0; index < initialFirefighterCount; index++) {
       firefighterPositions.add(randomPosition());
     }
-    firefighterManager.getFirefighterPositions().clear();
     firefighterManager.getFirefighterPositions().addAll(firefighterPositions);
   }
 
@@ -78,10 +76,10 @@ public class FirefighterBoard implements BoardBehavior<List<ModelElement>> ,Boar
   @Override
   public List<ModelElement> getState(Position position) {
     List<ModelElement> result = new ArrayList<>();
-    for (Position firefighterPosition : firefighterPositions)
+    for (Position firefighterPosition : firefighterManager.getFirefighterPositions())
       if (firefighterPosition.equals(position))
         result.add(ModelElement.FIREFIGHTER);
-    if (firePositions.contains(position))
+    if (fireManager.getFirePosition().contains(position))
       result.add(ModelElement.FIRE);
     return result;
   }
@@ -124,20 +122,20 @@ public class FirefighterBoard implements BoardBehavior<List<ModelElement>> ,Boar
   }
 
   private void extinguish(Position position) {
-    firePositions.remove(position);
+   fireManager.getFirePosition().remove(position);
   }
 
 
   @Override
   public void setState(List<ModelElement> state, Position position) {
-    firePositions.remove(position);
+   fireManager.getFirePosition().remove(position);
     for (; ; ) {
-      if (!firefighterPositions.remove(position)) break;
+      if (!firefighterManager.getFirefighterPositions().remove(position)) break;
     }
     for (ModelElement element : state) {
       switch (element) {
-        case FIRE -> firePositions.add(position);
-        case FIREFIGHTER -> firefighterPositions.add(position);
+        case FIRE -> fireManager.getFirePosition().add(position);
+        case FIREFIGHTER -> firefighterManager.getFirefighterPositions().add(position);
       }
     }
   }
-- 
GitLab