diff --git a/gradlew b/gradlew
old mode 100755
new mode 100644
diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java
index 86abb8525b4a41c5a54cea60981c01025d5ae3f8..a3b7996590737c56174cfc1539078b8028b19bbe 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -19,6 +19,7 @@ public class SimulatorApplication extends javafx.application.Application {
   private static final int BOX_HEIGHT = 25;
   public static final int INITIAL_FIRE_COUNT = 3;
   public static final int INITIAL_FIREFIGHTER_COUNT = 6;
+  public static final int INITIAL_CLOUD_COUNT = 6;
 
   private Stage primaryStage;
   private Parent view;
@@ -44,7 +45,7 @@ public class SimulatorApplication extends javafx.application.Application {
     view = loader.load();
     Controller controller = loader.getController();
     controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT,
-            INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT);
+            INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT);
   }
 
   private void showScene() {
diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index 04dd45ff4d3470ecc1557ba9b9801c769d15415e..f694acf9bee37287cf1267ad3e3594dd740f0e61 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -5,6 +5,11 @@ import static java.util.Objects.*;
 import java.util.ArrayList;
 import java.util.List;
 
+import static java.util.Objects.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
 import javafx.animation.Animation;
 import javafx.animation.KeyFrame;
 import javafx.animation.Timeline;
diff --git a/src/main/java/model/Board.java b/src/main/java/model/Board.java
index b0e448c8012bfe706f1a8d8dcf8b642a1aec6955..6bd1867cfe8f8835727bd0655900e9ccf5a8711c 100644
--- a/src/main/java/model/Board.java
+++ b/src/main/java/model/Board.java
@@ -4,6 +4,8 @@ import java.util.List;
 
 import util.Position;
 
+import util.Position;
+
 /**
  * This interface represents a generic board for modeling various state-based
  * systems.
diff --git a/src/main/java/model/EmptySquare.java b/src/main/java/model/EmptySquare.java
new file mode 100644
index 0000000000000000000000000000000000000000..113ea0a394870345e6520690e083b03c9bb70a7c
--- /dev/null
+++ b/src/main/java/model/EmptySquare.java
@@ -0,0 +1,49 @@
+package model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javafx.scene.paint.Color;
+import util.Position;
+
+public class EmptySquare implements Entity{
+
+    private Position position;
+    private final Color viewColor = Color.WHITE;
+    private int age;
+    public EmptySquare(Position p){
+        this.position = p;
+        this.age = -999;
+    }
+    public EmptySquare(Position p, int age){
+        this.position = p;
+        this.age = age;
+    }
+    @Override
+    public List<Position> nextTurn(Board<Entity> board) {
+        return new ArrayList<Position>();
+    }
+
+    @Override
+    public Position getPosition() {
+        return position;
+    }
+
+    @Override
+    public void setPosition(Position p) {
+        this.position = p;
+    }
+    
+    public Color getViewColor(){
+        return this.viewColor;
+    }
+    @Override
+    public int getAge() {
+        return this.age;
+    }
+
+    @Override
+    public void incrementAge() {
+        age = age + 1;
+    }
+}
diff --git a/src/main/java/model/Entity.java b/src/main/java/model/Entity.java
index a14b34a525698fa52e5d472ccbc57764f78b9435..7cafb0e4c7c5af55e65f10603af93062a02d7257 100644
--- a/src/main/java/model/Entity.java
+++ b/src/main/java/model/Entity.java
@@ -5,6 +5,11 @@ import java.util.List;
 import javafx.scene.paint.Color;
 import util.Position;
 
+import java.util.List;
+
+import javafx.scene.paint.Color;
+import util.Position;
+
 public interface Entity {
         /**
      * Exécute un tour de jeu, en vérifiant les cases adjacentes pour des instances de Fire.
diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java
index 65c3fe456a66630864e209db25b2ed38d35ffe2c..083068f9c033b1d73ada69c05df4fd60dd8a22a9 100644
--- a/src/main/java/model/Fire.java
+++ b/src/main/java/model/Fire.java
@@ -6,6 +6,7 @@ import java.util.List;
 import javafx.scene.paint.Color;
 import util.Position;
 import util.PositionUtil;
+import util.PositionUtil;
 
 public class Fire implements Entity {
     Board<Square> b;
diff --git a/src/main/java/model/FireFighter.java b/src/main/java/model/FireFighter.java
index 4e8a35e927eb440d3ce9d35ce327dfd741e206c5..cf7a6c52fd4a8bece2d2595a6af23b7c1ad6bb40 100644
--- a/src/main/java/model/FireFighter.java
+++ b/src/main/java/model/FireFighter.java
@@ -6,6 +6,7 @@ import java.util.List;
 import javafx.scene.paint.Color;
 import util.Position;
 import util.PositionUtil;
+import util.PositionUtil;
 
 public class FireFighter implements Entity {
     private int age;
diff --git a/src/main/java/model/FireFighterScenario.java b/src/main/java/model/FireFighterScenario.java
index 7fc6ce9f81869777ef22099dc22f1ebff58b3c45..a23793e8e59d784505f1f3f7857b86aac5450fab 100644
--- a/src/main/java/model/FireFighterScenario.java
+++ b/src/main/java/model/FireFighterScenario.java
@@ -3,12 +3,16 @@ package model;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
+import java.util.Collections;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Random;
+import java.util.Random;
 
 import util.Matrix;
 import util.Position;
 import util.PositionUtil;
+import util.PositionUtil;
 
 public class FireFighterScenario extends EntityScenario implements Board<Square> {
 
@@ -116,6 +120,9 @@ public class FireFighterScenario extends EntityScenario implements Board<Square>
     return matrix.getRows();
   }
 
+  public int columnCount() {
+    return matrix.getColumns();
+
   public int columnCount() {
     return matrix.getColumns();
   }
diff --git a/src/main/java/model/Scenario.java b/src/main/java/model/Scenario.java
index d491a6542975411890741666160ca88246e544ea..b7f97edde1a79e4a136bded306b605b1fc43e02e 100644
--- a/src/main/java/model/Scenario.java
+++ b/src/main/java/model/Scenario.java
@@ -3,5 +3,9 @@ package model;
 import util.Matrix;
 
 public interface Scenario {
+<<<<<<< HEAD
     public void initScenario(Matrix<Square> matrix);
+=======
+    public void initScenario(Matrix<Entity> matrix);
+>>>>>>> d8a3bf456f5b3471a26e38f4c2d9f5ccef27b158
 }
diff --git a/src/main/java/model/cloud.java b/src/main/java/model/cloud.java
new file mode 100644
index 0000000000000000000000000000000000000000..b11b9932d430732848f1c7bf298f8b8782812c63
--- /dev/null
+++ b/src/main/java/model/cloud.java
@@ -0,0 +1,94 @@
+package model;
+
+import javafx.scene.paint.Color;
+import util.Position;
+import util.PositionUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+public class cloud implements Entity{
+    private int age;
+    private final Color viewColor = Color.GREY;
+    private Position position;
+    Board<Entity> b;
+
+    public cloud (Position position, Board<Entity> b, int age){
+        this.age = age;
+        this.position = position;
+        this.b = b;
+    }
+
+
+
+    @Override
+    public List<Position> nextTurn(Board<Entity> b) {
+        List<Position> positions = new ArrayList<>();
+
+        // Générer les positions adjacentes valides
+        List<Position> possibleMoves = PositionUtil.generateAllAdjacentPositions(position, b);
+
+        // Sélectionner une position aléatoire parmi les mouvements possibles
+        Position next_pos = possibleMoves.get(new Random().nextInt(possibleMoves.size()));
+
+        // Vérifier l'état de la nouvelle position
+        ArrayList<Entity> nextEntities = b.getState(next_pos);
+
+        positions.add(position);
+        positions.add(next_pos);
+
+        // Si la nouvelle position contient un feu, éteindre le feu
+        if (nextEntities.contains(Fire.class)) {
+            extinguish(List.of(next_pos), b);
+        }
+
+
+        b.setState(this, next_pos);
+
+
+
+        // Retourner la position mise à jour pour affichage ou suivi
+        return positions;
+    }
+
+
+
+
+    private List<Position> extinguish(List<Position> next_pos, Board<Entity> b) {
+        List<Position> extinguishedPositions = new ArrayList<>();
+
+        if (b.getState(next_pos.get(0)).contains(Fire.class)) {
+                b.clearCase(next_pos.get(0));
+                extinguishedPositions.add(next_pos.get(0));
+        }
+
+
+        return extinguishedPositions;
+    }
+
+    @Override
+    public Position getPosition() {
+        return position;
+    }
+
+    @Override
+    public void setPosition(Position p) {
+            this.position = p;
+    }
+
+    @Override
+    public int getAge() {
+        return this.age;
+    }
+
+    @Override
+    public void incrementAge() {
+        this.age += 1;
+    }
+
+    @Override
+    public Color getViewColor() {
+        return viewColor;
+    }
+}
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index 4c36d97709b342e457203c75d081fc5cc1955c0f..1bd3e9a86156ea98b4650fee627b4411b90ff3fd 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -2,7 +2,8 @@ module firefighter {
   requires javafx.controls;
   requires javafx.fxml;
   requires javafx.graphics;
-  opens controller to javafx.fxml;
+    requires java.sql;
+    opens controller to javafx.fxml;
   exports app;
   opens app to javafx.fxml;
 }
diff --git a/src/main/java/util/Matrix.java b/src/main/java/util/Matrix.java
index 5bbccfa13e21061d30fd50baf111cacdff888d67..9fb77030ffe0228fcba57d442f8611bc6c8f42ad 100644
--- a/src/main/java/util/Matrix.java
+++ b/src/main/java/util/Matrix.java
@@ -1,5 +1,6 @@
 package util;
 
+
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.NoSuchElementException;