diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin
index f567d5f7ce5b11998269acfd4c7d8a9f89b82b5a..051fd35cbd1aaf2f2f60edf3b880204cfcc98c2e 100644
Binary files a/.gradle/8.10.2/executionHistory/executionHistory.bin and b/.gradle/8.10.2/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.10.2/executionHistory/executionHistory.lock b/.gradle/8.10.2/executionHistory/executionHistory.lock
index 41256fd6bdd2feeb94411d3f9c8abf8dd3f964bf..0be82c63efdc8504b711e35446e2a45e13b056e2 100644
Binary files a/.gradle/8.10.2/executionHistory/executionHistory.lock and b/.gradle/8.10.2/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.10.2/fileHashes/fileHashes.bin b/.gradle/8.10.2/fileHashes/fileHashes.bin
index d5a8d63e3c99c5de7f76ef64fcf34933be1ab73d..27b724348ee342ec8d4b5724953555a9bdf2bde5 100644
Binary files a/.gradle/8.10.2/fileHashes/fileHashes.bin and b/.gradle/8.10.2/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.10.2/fileHashes/fileHashes.lock b/.gradle/8.10.2/fileHashes/fileHashes.lock
index 6795a91ed07dcef1a1806b94068b6e52bc41e914..e68c6953a46e5070226bdc0295ae1d3dd8787e56 100644
Binary files a/.gradle/8.10.2/fileHashes/fileHashes.lock and b/.gradle/8.10.2/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin
index 349443662d1a52034982aba983801e0138f4ff52..efa19decb6e32ae5cef9eac1e52b8b7bcfa7c061 100644
Binary files a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin and b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 9d683f8b3c97ae148796b21c6603b9159514adfb..d0e0f9f97184b7335603179be1962ff8f3a3232d 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/build/classes/java/main/app/SimulatorApplication.class b/build/classes/java/main/app/SimulatorApplication.class
index dc15d24f41d9b56ad21c677748caa45a03a443f0..b735608fdbebd05cb7e9eb1ca39511b3fbfe80a5 100644
Binary files a/build/classes/java/main/app/SimulatorApplication.class and b/build/classes/java/main/app/SimulatorApplication.class differ
diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class
index 00792338e3a8a4002978bd91ac30ddd07c212774..d065bd5dfaab8640cbea20806d61f79d0867da45 100644
Binary files a/build/classes/java/main/controller/Controller.class and b/build/classes/java/main/controller/Controller.class differ
diff --git a/build/classes/java/main/model/FirefighterBoard$1.class b/build/classes/java/main/model/FirefighterBoard$1.class
index 50363e95c461a5ed1a144909bef70c30f2caf46d..c678800e340a424d63f8419f3426761f04bc6d45 100644
Binary files a/build/classes/java/main/model/FirefighterBoard$1.class and b/build/classes/java/main/model/FirefighterBoard$1.class differ
diff --git a/build/classes/java/main/model/FirefighterBoard.class b/build/classes/java/main/model/FirefighterBoard.class
index 6dfe63690e08e385f5a68dbef03a51342697a22e..d90530e8d72b19736694ba88f2525b738af4bb8d 100644
Binary files a/build/classes/java/main/model/FirefighterBoard.class and b/build/classes/java/main/model/FirefighterBoard.class differ
diff --git a/build/classes/java/main/model/ModelElement.class b/build/classes/java/main/model/ModelElement.class
index 873561ee1e63e20eb4cddda40a1cc402c0e986a1..ef86abea6c0b56da02b5a42cfd91a39108401c81 100644
Binary files a/build/classes/java/main/model/ModelElement.class and b/build/classes/java/main/model/ModelElement.class differ
diff --git a/build/classes/java/main/model/SimpleFireSpreadStrategy.class b/build/classes/java/main/model/SimpleFireSpreadStrategy.class
index 595ad5f73d206af2527a6fdd05093fffdca17a2e..99f37d9599a845f4357686ac641025aef33c3430 100644
Binary files a/build/classes/java/main/model/SimpleFireSpreadStrategy.class and b/build/classes/java/main/model/SimpleFireSpreadStrategy.class differ
diff --git a/build/classes/java/main/view/FirefighterGrid.class b/build/classes/java/main/view/FirefighterGrid.class
index 09f09cb8b7734d04883d1aa19b58d938f72c765a..2b66bfdf17fed85e7539d1b0a714e09803e4efaa 100644
Binary files a/build/classes/java/main/view/FirefighterGrid.class and b/build/classes/java/main/view/FirefighterGrid.class differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index a8677ee28dfc53505bfb2ab19387baa449307753..687f3d658c2b5616b6cc79b89347e94a27d1cf12 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java
index cb0f20ee0d09d048909b28a5ac2ea423aa8d4081..acce2f1264bd3fcbb1556523b4695f0f05f8a7e2 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -22,6 +22,7 @@ public class SimulatorApplication extends javafx.application.Application {
     public static final int  INITIAL_ROAD_COUNT = 10;
     public static final int  INITIAL_CLOUD_COUNT = 5;
     public static final int  INITIAL_MOUTAIN_COUNT = 5;
+    public static final int  INITIAL_ROCKS_COUNT = 5;
 
     private Stage primaryStage;
     private Parent view;
@@ -49,7 +50,7 @@ public class SimulatorApplication extends javafx.application.Application {
 
         Controller controller = loader.getController();
         controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT,
-                INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_ROAD_COUNT,INITIAL_CLOUD_COUNT, INITIAL_MOUTAIN_COUNT);
+                INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_ROAD_COUNT,INITIAL_CLOUD_COUNT, INITIAL_MOUTAIN_COUNT, INITIAL_ROCKS_COUNT);
     }
 
     private void showScene() {
diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index 1b7d8c4433b61b49eb6936c3975d77902c92d6ca..fd265eb44ebb73210ad4782931fd4772a2318c38 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -33,9 +33,9 @@ public class Controller {
   @FXML
   private FirefighterGrid grid;
 
-  public void initialize(int boxWidth, int boxHeight, int columns, int rows, int fireCount, int firefighterCount, int initialRoadCount,int initialcloudCount, int initialMountainsCount) {
+  public void initialize(int boxWidth, int boxHeight, int columns, int rows, int fireCount, int firefighterCount, int initialRoadCount,int initialcloudCount, int initialMountainsCount, int initialRocksCount) {
     // Initialize the simulation board and connect it to the grid
-    board = new FirefighterBoard(columns, rows, fireCount, firefighterCount, initialRoadCount,initialcloudCount, initialMountainsCount);
+    board = new FirefighterBoard(columns, rows, fireCount, firefighterCount, initialRoadCount,initialcloudCount, initialMountainsCount, initialRocksCount);
     grid.initialize(columns, rows, boxWidth, boxHeight, board);
 
     // Initialize timeline for automatic progression
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index cdc229d98201fbb8d07e7f4d52f233dc195b5bbb..55c698be17be5604a5a89a0cc2f0dcdb4d234687 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -14,6 +14,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     private final int initialRoadCount;
     private final int initialcloudCount;
     private final int initialmountainsCount;
+    private final int initialrocksCount;
 
     private List<Position> firefighterPositions;
     private Set<Position> firePositions;
@@ -22,11 +23,12 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     private final Position[][] positions;
     private List<Position> cloudPositions;
     private Set<Position> moutainsPositions;
+    private Set<Position> rocksPositions;
 
     private int step = 0;
 
     // Constructor for FirefighterBoard
-    public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount, int initialcloudCount, int initialmountainsCount) {
+    public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount, int initialcloudCount, int initialmountainsCount, int initialrocksCount) {
         this.columnCount = columnCount;
         this.rowCount = rowCount;
         this.initialFireCount = initialFireCount;
@@ -34,6 +36,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
         this.initialRoadCount = initialRoadCount;
         this.initialcloudCount = initialcloudCount;
         this.initialmountainsCount = initialmountainsCount;
+        this.initialrocksCount = initialrocksCount;
 
         this.positions = new Position[rowCount][columnCount];
         this.firefighterPositions = new ArrayList<>();
@@ -42,6 +45,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
         this.cloudPositions = new ArrayList<>();
         this.moutainsPositions = new HashSet<>();
         this.roadPositions = new HashSet<>();
+        this.rocksPositions = new HashSet<>();
 
         initializeBoard();
     }
@@ -70,6 +74,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
         for (int i = 0; i < initialmountainsCount; i++) {
             moutainsPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
         }
+        // Initialize rocks positions
+        for (int i = 0; i < initialrocksCount; i++) {
+            rocksPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
+        }
 
 
         // Initialize neighbors map
@@ -120,6 +128,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
                         result.add(ModelElement.MOUTAIN);
                     }
                 }
+                case ROCKS -> {
+                    if (rocksPositions.contains(position)) {
+                        result.add(ModelElement.ROCKS);
+                    }
+                }
                 default ->{
                 }
             }
@@ -145,12 +158,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     @Override
     public void reset() {
         step = 0;
-        Initializer initializer = new Initializer(columnCount,rowCount,initialFireCount,initialFirefighterCount, initialRoadCount,initialcloudCount, initialmountainsCount);
+        Initializer initializer = new Initializer(columnCount,rowCount,initialFireCount,initialFirefighterCount, initialRoadCount,initialcloudCount, initialmountainsCount, initialrocksCount);
         resetPos(firePositions,initializer.getFirePositions());
         resetPos(firefighterPositions,initializer.getFirefighterPositions());
         resetPos(cloudPositions,initializer.getCloudPositions());
         resetPos(moutainsPositions,initializer.getMountainsPositions());
         resetPos(roadPositions,initializer.getRoadPositions());
+        resetPos(rocksPositions,initializer.getRoadPositions());
 
         neighbors.clear();
         neighbors.putAll(initializer.getNeighbors());
@@ -187,7 +201,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
 
         for(ModelElement element : elements) {
             Strategy strategy = switch(element) {
-                case FIRE -> new SimpleFireSpreadStrategy(firePositions, neighbors,moutainsPositions,roadPositions, step);
+                case FIRE -> new SimpleFireSpreadStrategy(firePositions, neighbors,moutainsPositions,roadPositions, rocksPositions,step);
                 case FIREFIGHTER -> new FirefighterMovementStrategy(firefighterPositions,firePositions,neighbors);
                 case CLOUD -> new CloudStrategy(cloudPositions,firePositions,neighbors,rowCount,columnCount);
                 default -> throw new IllegalStateException("Type de modèle inconnu : " + element);
@@ -249,6 +263,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
         for (Position moutainPosition : moutainsPositions){
             updatedElements.add(new Pair<>(moutainPosition, ModelElement.MOUTAIN));
         }
+        for (Position rockPosition : rocksPositions){
+            updatedElements.add(new Pair<>(rockPosition,ModelElement.ROCKS));
+        }
 
         return updatedElements;
     }
diff --git a/src/main/java/model/Initializer.java b/src/main/java/model/Initializer.java
index 575b4dcd9ae55da2c64fa0352ba48534c3e00d3e..07cff900ecce9bb6161865cd6d0e54f34919f330 100644
--- a/src/main/java/model/Initializer.java
+++ b/src/main/java/model/Initializer.java
@@ -14,6 +14,7 @@ public class Initializer {
     private final int initialRoadCount;
     private final int initialcloudCount;
     private final int initialMoutainCount;
+    private final int initialRocksCount;
 
 
     private final Position[][] positions;
@@ -23,12 +24,13 @@ public class Initializer {
     private final Set<Position> firePositions;
     private final List<Position> cloudPositions;
     private final Set<Position> mountainsPositions;
+    private final Set<Position> rocksPositions;
     private int step = 0;
 
     private final Random randomGenerator = new Random();
 
 
-    public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount,int initialcloudCount, int initialMoutainCount) {
+    public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount,int initialcloudCount, int initialMoutainCount,int initialRocksCount) {
         this.columnCount = columnCount;
         this.rowCount = rowCount;
         this.initialFireCount = initialFireCount;
@@ -36,6 +38,7 @@ public class Initializer {
         this.initialRoadCount = initialRoadCount;
         this.initialcloudCount = initialcloudCount;
         this.initialMoutainCount = initialMoutainCount;
+        this.initialRocksCount = initialRocksCount;
 
         this.positions = new Position[rowCount][columnCount];
         this.neighbors = new HashMap<>();
@@ -44,6 +47,10 @@ public class Initializer {
         this.RoadPositions = new ArrayList<>();
         this.cloudPositions = new ArrayList<>();
         this.mountainsPositions = new HashSet<>();
+        this.rocksPositions = new HashSet<>();
+        initializePositions();
+        initializeNeighbors();
+        initializeElements();
 
     }
     private void initializePositions() {
@@ -71,6 +78,7 @@ public class Initializer {
         initializeRoadPositions();
         initializeCloudsPositions();
         initializeMoutainsPositions();
+        initializeRocksPositions();
 
     }
     private void initializeFirePositions() {
@@ -85,6 +93,7 @@ public class Initializer {
         addRandomPositions(cloudPositions, initialcloudCount);
     }
     private void initializeMoutainsPositions() {addRandomPositions(mountainsPositions, initialMoutainCount);}
+    private void initializeRocksPositions() {addRandomPositions(rocksPositions, initialRocksCount);}
 
 
     private void addRandomPositions(Collection<Position> targetCollection, int count) {
@@ -142,6 +151,9 @@ public class Initializer {
     public Set<Position> getMountainsPositions() {
         return mountainsPositions;
     }
+    public Set<Position> getRocksPositions() {
+        return rocksPositions;
+    }
     public int getStep() {return step;}
 
 }
diff --git a/src/main/java/model/ModelElement.java b/src/main/java/model/ModelElement.java
index e3b38449c108a162f6105648e9d3e6cd2a892a93..8db860b59e5e2906e2611e3414241c326a4353f0 100644
--- a/src/main/java/model/ModelElement.java
+++ b/src/main/java/model/ModelElement.java
@@ -2,7 +2,7 @@ package model;
 
 
 public enum ModelElement {
-  FIREFIGHTER("blue"), FIRE("red"), CLOUD("darkgrey"),ROAD("grey"),EMPTY("white"), MOUTAIN("brown");
+  FIREFIGHTER("blue"), FIRE("red"), CLOUD("darkgrey"),ROAD("grey"),EMPTY("white"), MOUTAIN("brown"), ROCKS("lightBrown");
 
   private final String color;
 
diff --git a/src/main/java/model/SimpleFireSpreadStrategy.java b/src/main/java/model/SimpleFireSpreadStrategy.java
index 0f7c42b3b7838d3adeccee49367901955f8dddb6..84e2c39aa5c3e8bc7b07b7526c02466237f1c8d5 100644
--- a/src/main/java/model/SimpleFireSpreadStrategy.java
+++ b/src/main/java/model/SimpleFireSpreadStrategy.java
@@ -8,13 +8,15 @@ public class SimpleFireSpreadStrategy implements Strategy {
     private final Map<Position, List<Position>> neighbors;
     private final Set<Position> mountainPositions;
     private final Set<Position> roadPositions;
+    private final Set<Position> rocksPositions;
     private final int step;
 
-    public SimpleFireSpreadStrategy(Set<Position> firePositions, Map<Position, List<Position>> neighbors,Set<Position> moutainsPositions,Set<Position> roadPositions, int step) {
+    public SimpleFireSpreadStrategy(Set<Position> firePositions, Map<Position, List<Position>> neighbors,Set<Position> moutainsPositions,Set<Position> roadPositions,Set<Position> rocksPositions, int step) {
         this.firePositions = firePositions;
         this.neighbors = neighbors;
         this.mountainPositions = moutainsPositions;
         this.roadPositions = roadPositions;
+        this.rocksPositions = rocksPositions;
         this.step = step;
     }
 
@@ -45,6 +47,9 @@ public class SimpleFireSpreadStrategy implements Strategy {
         if(mountainPositions.contains(newPosition) || roadPositions.contains(newPosition)){
             return false;
         }
+        if (rocksPositions.contains(newPosition)){
+            return step % 4 ==0;
+        }
         return true;
     }
 
diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java
index 39af292166cd1a17c9f90bba024c8ef075c0dbfc..16c1969b52165833705b52d9b0f4784abff33da2 100644
--- a/src/main/java/view/FirefighterGrid.java
+++ b/src/main/java/view/FirefighterGrid.java
@@ -41,14 +41,16 @@ public class FirefighterGrid extends Canvas {
             // Set the color based on the element type
             if (element == ModelElement.FIRE) {
                 gc.setFill(Color.RED);  // Fire is red
-            }else if (element == ModelElement.FIREFIGHTER) {
+            } else if (element == ModelElement.FIREFIGHTER) {
                 gc.setFill(Color.BLUE);  // Firefighter is blue
-            }else if (element== ModelElement.ROAD){
+            } else if (element == ModelElement.ROAD) {
                 gc.setFill(Color.WHITE);
-            }else if (element == ModelElement.CLOUD) {
+            } else if (element == ModelElement.CLOUD) {
                 gc.setFill(Color.YELLOW);
-            }else if (element == ModelElement.MOUTAIN) {
+            } else if (element == ModelElement.MOUTAIN) {
                 gc.setFill(Color.GREEN);
+            } else if (element == ModelElement.ROCKS) {
+                gc.setFill(Color.LIGHTSKYBLUE);
             } else {
                 gc.setFill(Color.WHITE);  // Empty space is white
             }