diff --git a/src/main/java/model/FireFighterScenario.java b/src/main/java/model/FireFighterScenario.java
index c8df8095a524b1507681a843611b2e675b5f0608..48027ef5cad8e1f284cd2f37d59dd3cd02684bf4 100644
--- a/src/main/java/model/FireFighterScenario.java
+++ b/src/main/java/model/FireFighterScenario.java
@@ -8,6 +8,7 @@ import java.util.Random;
 
 import util.Matrix;
 import util.Position;
+import util.PositionUtil;
 
 public class FireFighterScenario extends EntityScenario implements Board<Entity> {
 
@@ -21,7 +22,7 @@ public class FireFighterScenario extends EntityScenario implements Board<Entity>
     this.step = 0;
   }
 
-private void placeInitialActors(int initialFireCount, int initialFireFightersCount) {
+  private void placeInitialActors(int initialFireCount, int initialFireFightersCount) {
     int fireCount = 0;
     int fireFighterCount = 0;
     int chance = 5; // Chance initiale en pourcentage
@@ -29,40 +30,39 @@ private void placeInitialActors(int initialFireCount, int initialFireFightersCou
 
     List<Position> positions = new ArrayList<>();
     for (int x = 0; x < matrix.getRows(); x++) {
-        for (int y = 0; y < matrix.getColumns(); y++) {
-            positions.add(new Position(x, y));
-        }
+      for (int y = 0; y < matrix.getColumns(); y++) {
+        positions.add(new Position(x, y));
+      }
     }
 
     while (fireCount < initialFireCount || fireFighterCount < initialFireFightersCount) {
-        Collections.shuffle(positions); // Mélange les positions pour un parcours aléatoire
-
-        for (Position pos : positions) {
-            if (getState(pos) instanceof EmptySquare) {
-                if (fireCount < initialFireCount && random.nextInt(100) < chance) {
-                    setState(new Fire(pos, this, 1), pos);
-                    fireCount++;
-                    if (fireCount == initialFireCount && fireFighterCount == initialFireFightersCount) {
-                        return;
-                    }
-                    continue;
-                }
-
-                if (fireFighterCount < initialFireFightersCount && random.nextInt(100) < chance) {
-                    setState(new FireFighter(pos, this,1), pos);
-                    fireFighterCount++;
-                    if (fireCount == initialFireCount && fireFighterCount == initialFireFightersCount) {
-                        return;
-                    }
-                }
+      Collections.shuffle(positions); // Mélange les positions pour un parcours aléatoire
+
+      for (Position pos : positions) {
+        if (getState(pos) instanceof EmptySquare) {
+          if (fireCount < initialFireCount && random.nextInt(100) < chance) {
+            setState(new Fire(pos, this, 1), pos);
+            fireCount++;
+            if (fireCount == initialFireCount && fireFighterCount == initialFireFightersCount) {
+              return;
+            }
+            continue;
+          }
+
+          if (fireFighterCount < initialFireFightersCount && random.nextInt(100) < chance) {
+            setState(new FireFighter(pos, this, 1), pos);
+            fireFighterCount++;
+            if (fireCount == initialFireCount && fireFighterCount == initialFireFightersCount) {
+              return;
             }
+          }
         }
+      }
 
-        // Augmente la chance de placement après chaque parcours complet
-        chance = Math.min(chance + 5, 100); // Ne dépasse pas 100%
+      // Augmente la chance de placement après chaque parcours complet
+      chance = Math.min(chance + 5, 100); // Ne dépasse pas 100%
     }
-}
-
+  }
 
   public Entity getState(Position position) {
     if (position.x() > matrix.size() || position.y() > matrix.size()) {
@@ -76,7 +76,7 @@ private void placeInitialActors(int initialFireCount, int initialFireFightersCou
     if (!(getState(position) instanceof EmptySquare)) {
       return;
     }
-    if(doesPositionExist(position)){
+    if (doesPositionExist(position)) {
       matrix.set(position.x(), position.y(), state);
     }
   }
@@ -101,24 +101,52 @@ private void placeInitialActors(int initialFireCount, int initialFireFightersCou
     Iterator<Entity> iterator = matrix.iterator();
     while (iterator.hasNext()) {
       Entity e = iterator.next();
-      if(e instanceof EmptySquare) continue;
-      System.out.println("found age : " + e.getAge()  + " current age : " + step);
-      if(e.getAge() == 0) {
+      if (e instanceof EmptySquare)
+        continue;
+      System.out.println("found age : " + e.getAge() + " current age : " + step);
+      if (e.getAge() == 0) {
         e.incrementAge();
         continue;
-      };
+      }
+      ;
       List<Position> entityUpdatedPositions = e.nextTurn(this);
       changedPositions.addAll(entityUpdatedPositions);
     }
     return changedPositions;
   }
 
+  public Position getNearestEntity(Position fromPos, Class<?> entityType) {
+    int rows = matrix.getRows();
+    int cols = matrix.getColumns();
+    Position nearestPosition = null;
+
+    // Définir la distance maximale possible
+    int maxDistance = rows + cols;
+
+    // Parcourir les distances croissantes à partir de 1
+    for (int distance = 1; distance < maxDistance; distance++) {
+      List<Position> positionsAtDistance = PositionUtil.getPositionsAtManhattanDistance(fromPos, distance, rows, cols);
+
+      for (Position currentPos : positionsAtDistance) {
+        Entity currentEntity = matrix.get(currentPos.x(), currentPos.y());
+        if (entityType.isInstance(currentEntity)) {
+          // Dès qu'une entité est trouvée à cette distance, elle est la plus proche
+          // possible
+          return currentPos;
+        }
+      }
+    }
+
+    return nearestPosition; // Retourne null si aucune entité n'est trouvée
+  }
+
+
   public void reset() {
     matrix.clear();
   }
 
   public int stepNumber() {
-    this.step = step +1;
+    this.step = step + 1;
     return this.step;
   }