diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java
index 7629eeb1e4853f94cd11a32c4ef743330cce0d61..d90b83939c71dd2135935acae277145bdaac1c7d 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -13,8 +13,8 @@ import javafx.stage.Stage;
 public class SimulatorApplication extends javafx.application.Application {
   private static final String VIEW_RESOURCE_PATH = "/view/view.fxml";
   private static final String APP_NAME = "Firefighter simulator";
-  private static final int ROW_COUNT = 20;
-  private static final int COLUMN_COUNT = 20;
+  private static final int ROW_COUNT = 22;
+  private static final int COLUMN_COUNT = 22;
   private static final int BOX_WIDTH = 25;
   private static final int BOX_HEIGHT = 25;
   public static final int INITIAL_FIRE_COUNT = 3;
diff --git a/src/main/java/model/Cloud.java b/src/main/java/model/Cloud.java
index d953e02aed26027710d3ba02cf51d7eddf536b7d..04d6a05926f658c70f85251331c70e925c26d904 100644
--- a/src/main/java/model/Cloud.java
+++ b/src/main/java/model/Cloud.java
@@ -31,22 +31,27 @@ public class Cloud implements Entity{
     @Override
     public List<Position> nextTurn(Board<Square> b) {
         List<Position> adjacentPositions = PositionUtil.generateAdjacentPositions(position, b);
-        Position next_position = adjacentPositions.get(new Random().nextInt(adjacentPositions.size()));
 
+        // Filtrer pour obtenir uniquement les positions qui ne contiennent pas de pompier
+        adjacentPositions.removeIf(p -> b.doesSquareContainEntity(p, FireFighter.class));
 
+        // Choisir une position aléatoire parmi les mouvements possibles
+        Position next_position = adjacentPositions.get(new Random().nextInt(adjacentPositions.size()));
 
-        if (b.getStates(next_position).getEntities().stream().anyMatch(element -> element instanceof Fire)){
+        // Si la nouvelle position contient un feu, éteindre le feu
+        if (b.getStates(next_position).getEntities().stream().anyMatch(element -> element instanceof Fire) ){
             extinguish(next_position, b);
         }
+
         Position old_position = this.position;
         this.position = next_position;
-        b.addEntityAtSquare(this, position);
+        b.addEntityAtSquare(this, next_position);
         b.clearCaseFrom(this, old_position);
 
-
         return List.of(old_position, this.position);
     }
 
+
     private Position extinguish(Position p, Board<Square> b) {
         b.getStates(p).getEntities().removeIf(element -> element instanceof Fire);
             List<Entity> entities = b.getStates(p).getEntities();
diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java
index 083068f9c033b1d73ada69c05df4fd60dd8a22a9..16b8726528e434c9678b566720b5443304eed439 100644
--- a/src/main/java/model/Fire.java
+++ b/src/main/java/model/Fire.java
@@ -32,7 +32,7 @@ public class Fire implements Entity {
             return new ArrayList<Position>();
         List<Position> positions = PositionUtil.generateAdjacentPositions(position, board);
         for (Position p : positions) {
-            if (b.getStates(p).isEmpty()) {
+            if (b.getStates(p).isEmpty() && !b.getStates(p).getEntities().contains(Cloud.class)) {
                 if (b.getStates(p).getMaxAge() < b.getStepNumber()
                         && PositionUtil.getManhattanDistance(position, p) == 1) {
                     board.addEntityAtSquare(new Fire(p, board), p);