diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin
index d272bec8c57c280c71a26cb9b0aa10bf9f185d95..f567d5f7ce5b11998269acfd4c7d8a9f89b82b5a 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 2f4203bae8d2a9c93bc24f9885e80fbd8ed8195e..41256fd6bdd2feeb94411d3f9c8abf8dd3f964bf 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 e9c1239a490550c9a7aafb79ea24146e616cbe0d..d5a8d63e3c99c5de7f76ef64fcf34933be1ab73d 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 1b189eae87aec7e4ebe829113003dcaecfda3b4e..6795a91ed07dcef1a1806b94068b6e52bc41e914 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 0aeba1240cd74ee4653e37f5f98873ffe354b6ab..349443662d1a52034982aba983801e0138f4ff52 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 cc5b4199f6c5be3ce5ef9cc7e3475cbf712d34eb..9d683f8b3c97ae148796b21c6603b9159514adfb 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 8cdb4ed274b5f200e38a2680759e2fac291ccc49..dc15d24f41d9b56ad21c677748caa45a03a443f0 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 5f68e7f4e063d23203364a3372c90dffc83ea3d6..00792338e3a8a4002978bd91ac30ddd07c212774 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 340e59817ded726fe7aa0bc607d15840ee0e0c47..50363e95c461a5ed1a144909bef70c30f2caf46d 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 5d0dad747dedc784fd9b0104c23704c1fac1e7e3..6dfe63690e08e385f5a68dbef03a51342697a22e 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 fe891d9e06c9418e7108a3585c3bace42b77ae48..873561ee1e63e20eb4cddda40a1cc402c0e986a1 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/view/FirefighterGrid.class b/build/classes/java/main/view/FirefighterGrid.class
index 37d92b1265d1f3a542d09824b51c0426c2cbafa8..09f09cb8b7734d04883d1aa19b58d938f72c765a 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 4ec4d11099f238606374670516d33c8f2f1da147..a8677ee28dfc53505bfb2ab19387baa449307753 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 31689a20dc0bd9f5bf307eeee5951f019bea16b8..cb0f20ee0d09d048909b28a5ac2ea423aa8d4081 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -20,7 +20,8 @@ public class SimulatorApplication extends javafx.application.Application {
     public static final int INITIAL_FIRE_COUNT = 5;
     public static final int INITIAL_FIREFIGHTER_COUNT = 4;
     public static final int  INITIAL_ROAD_COUNT = 10;
-    public static final int  INITIAL_CLAUD_COUNT = 3;
+    public static final int  INITIAL_CLOUD_COUNT = 5;
+    public static final int  INITIAL_MOUTAIN_COUNT = 5;
 
     private Stage primaryStage;
     private Parent view;
@@ -48,7 +49,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_CLAUD_COUNT);
+                INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_ROAD_COUNT,INITIAL_CLOUD_COUNT, INITIAL_MOUTAIN_COUNT);
     }
 
     private void showScene() {
diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index 8800ae20468a081bb23742381f360a45a7fbb224..1b7d8c4433b61b49eb6936c3975d77902c92d6ca 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 initialclaudCount) {
+  public void initialize(int boxWidth, int boxHeight, int columns, int rows, int fireCount, int firefighterCount, int initialRoadCount,int initialcloudCount, int initialMountainsCount) {
     // Initialize the simulation board and connect it to the grid
-    board = new FirefighterBoard(columns, rows, fireCount, firefighterCount, initialRoadCount,initialclaudCount);
+    board = new FirefighterBoard(columns, rows, fireCount, firefighterCount, initialRoadCount,initialcloudCount, initialMountainsCount);
     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 e545e7094ef5576f816ce0e6b9ca052968ef18ee..cdc229d98201fbb8d07e7f4d52f233dc195b5bbb 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -13,6 +13,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     private final int initialFirefighterCount;
     private final int initialRoadCount;
     private final int initialcloudCount;
+    private final int initialmountainsCount;
 
     private List<Position> firefighterPositions;
     private Set<Position> firePositions;
@@ -20,23 +21,26 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     private final Map<Position, List<Position>> neighbors;
     private final Position[][] positions;
     private List<Position> cloudPositions;
+    private Set<Position> moutainsPositions;
 
     private int step = 0;
 
     // Constructor for FirefighterBoard
-    public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount, int initialcloudCount) {
+    public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount, int initialcloudCount, int initialmountainsCount) {
         this.columnCount = columnCount;
         this.rowCount = rowCount;
         this.initialFireCount = initialFireCount;
         this.initialFirefighterCount = initialFirefighterCount;
         this.initialRoadCount = initialRoadCount;
         this.initialcloudCount = initialcloudCount;
+        this.initialmountainsCount = initialmountainsCount;
 
         this.positions = new Position[rowCount][columnCount];
         this.firefighterPositions = new ArrayList<>();
         this.firePositions = new HashSet<>();
         this.neighbors = new HashMap<>();
         this.cloudPositions = new ArrayList<>();
+        this.moutainsPositions = new HashSet<>();
         this.roadPositions = new HashSet<>();
 
         initializeBoard();
@@ -62,6 +66,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
         for (int i = 0; i < initialcloudCount; i++) {
             cloudPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
         }
+        // Initialize Moutains Positions
+        for (int i = 0; i < initialmountainsCount; i++) {
+            moutainsPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
+        }
 
 
         // Initialize neighbors map
@@ -107,6 +115,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
                         result.add(ModelElement.ROAD);
                     }
                 }
+                case MOUTAIN -> {
+                    if (moutainsPositions.contains(position)) {
+                        result.add(ModelElement.MOUTAIN);
+                    }
+                }
                 default ->{
                 }
             }
@@ -132,10 +145,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     @Override
     public void reset() {
         step = 0;
-        Initializer initializer = new Initializer(columnCount,rowCount,initialFireCount,initialFirefighterCount, initialRoadCount,initialcloudCount);
+        Initializer initializer = new Initializer(columnCount,rowCount,initialFireCount,initialFirefighterCount, initialRoadCount,initialcloudCount, initialmountainsCount);
         resetPos(firePositions,initializer.getFirePositions());
         resetPos(firefighterPositions,initializer.getFirefighterPositions());
         resetPos(cloudPositions,initializer.getCloudPositions());
+        resetPos(moutainsPositions,initializer.getMountainsPositions());
         resetPos(roadPositions,initializer.getRoadPositions());
 
         neighbors.clear();
@@ -173,7 +187,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
 
         for(ModelElement element : elements) {
             Strategy strategy = switch(element) {
-                case FIRE -> new SimpleFireSpreadStrategy(firePositions, neighbors,step);
+                case FIRE -> new SimpleFireSpreadStrategy(firePositions, neighbors,moutainsPositions,roadPositions, 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);
@@ -232,6 +246,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
         for (Position roadPosition : roadPositions) {
             updatedElements.add(new Pair<>(roadPosition, ModelElement.ROAD));
         }
+        for (Position moutainPosition : moutainsPositions){
+            updatedElements.add(new Pair<>(moutainPosition, ModelElement.MOUTAIN));
+        }
 
         return updatedElements;
     }
diff --git a/src/main/java/model/Initializer.java b/src/main/java/model/Initializer.java
index b5d4dde0a076dfdd233334b6b9d7f9a63ef3038e..575b4dcd9ae55da2c64fa0352ba48534c3e00d3e 100644
--- a/src/main/java/model/Initializer.java
+++ b/src/main/java/model/Initializer.java
@@ -4,6 +4,8 @@ import util.Position;
 
 import java.util.*;
 
+import static app.SimulatorApplication.*;
+
 public class Initializer {
     private final int columnCount;
     private final int rowCount;
@@ -11,6 +13,8 @@ public class Initializer {
     private final int initialFirefighterCount;
     private final int initialRoadCount;
     private final int initialcloudCount;
+    private final int initialMoutainCount;
+
 
     private final Position[][] positions;
     private final Map<Position, List<Position>> neighbors;
@@ -18,20 +22,20 @@ public class Initializer {
     private final List<Position> firefighterPositions;
     private final Set<Position> firePositions;
     private final List<Position> cloudPositions;
+    private final Set<Position> mountainsPositions;
     private int step = 0;
 
     private final Random randomGenerator = new Random();
 
-    private static final int cloudCount = 3;
-
 
-    public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount,int initialcloudCount) {
+    public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount,int initialcloudCount, int initialMoutainCount) {
         this.columnCount = columnCount;
         this.rowCount = rowCount;
         this.initialFireCount = initialFireCount;
         this.initialFirefighterCount = initialFirefighterCount;
         this.initialRoadCount = initialRoadCount;
         this.initialcloudCount = initialcloudCount;
+        this.initialMoutainCount = initialMoutainCount;
 
         this.positions = new Position[rowCount][columnCount];
         this.neighbors = new HashMap<>();
@@ -39,6 +43,7 @@ public class Initializer {
         this.firefighterPositions = new ArrayList<>();
         this.RoadPositions = new ArrayList<>();
         this.cloudPositions = new ArrayList<>();
+        this.mountainsPositions = new HashSet<>();
 
     }
     private void initializePositions() {
@@ -65,6 +70,7 @@ public class Initializer {
         initializeFirefighters();
         initializeRoadPositions();
         initializeCloudsPositions();
+        initializeMoutainsPositions();
 
     }
     private void initializeFirePositions() {
@@ -76,8 +82,9 @@ public class Initializer {
     private void initializeRoadPositions() {
         addRandomPositions(RoadPositions, initialRoadCount);}
     private void initializeCloudsPositions() {
-        addRandomPositions(cloudPositions, cloudCount);
+        addRandomPositions(cloudPositions, initialcloudCount);
     }
+    private void initializeMoutainsPositions() {addRandomPositions(mountainsPositions, initialMoutainCount);}
 
 
     private void addRandomPositions(Collection<Position> targetCollection, int count) {
@@ -129,7 +136,12 @@ public class Initializer {
     public List<Position> getRoadPositions() {
         return RoadPositions;
     }
-    public List<Position> getCloudPositions() {return cloudPositions;}
+    public List<Position> getCloudPositions() {
+        return cloudPositions;
+    }
+    public Set<Position> getMountainsPositions() {
+        return mountainsPositions;
+    }
     public int getStep() {return step;}
 
 }
diff --git a/src/main/java/model/ModelElement.java b/src/main/java/model/ModelElement.java
index 8a0f27b21509a2424ae25f2c8309a8d885b2ff72..e3b38449c108a162f6105648e9d3e6cd2a892a93 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");
+  FIREFIGHTER("blue"), FIRE("red"), CLOUD("darkgrey"),ROAD("grey"),EMPTY("white"), MOUTAIN("brown");
 
   private final String color;
 
diff --git a/src/main/java/model/SimpleFireSpreadStrategy.java b/src/main/java/model/SimpleFireSpreadStrategy.java
index b8f9e863c81fd4dc39c42301da89345524b2d43d..0f7c42b3b7838d3adeccee49367901955f8dddb6 100644
--- a/src/main/java/model/SimpleFireSpreadStrategy.java
+++ b/src/main/java/model/SimpleFireSpreadStrategy.java
@@ -6,11 +6,15 @@ import java.util.*;
 public class SimpleFireSpreadStrategy implements Strategy {
     private final Set<Position> firePositions;
     private final Map<Position, List<Position>> neighbors;
+    private final Set<Position> mountainPositions;
+    private final Set<Position> roadPositions;
     private final int step;
 
-    public SimpleFireSpreadStrategy(Set<Position> firePositions, Map<Position, List<Position>> neighbors, int step) {
+    public SimpleFireSpreadStrategy(Set<Position> firePositions, Map<Position, List<Position>> neighbors,Set<Position> moutainsPositions,Set<Position> roadPositions, int step) {
         this.firePositions = firePositions;
         this.neighbors = neighbors;
+        this.mountainPositions = moutainsPositions;
+        this.roadPositions = roadPositions;
         this.step = step;
     }
 
@@ -37,7 +41,10 @@ public class SimpleFireSpreadStrategy implements Strategy {
             }
         }
     }
-    private boolean canPropagateTo(Position firePosition) {
+    private boolean canPropagateTo(Position newPosition) {
+        if(mountainPositions.contains(newPosition) || roadPositions.contains(newPosition)){
+            return false;
+        }
         return true;
     }
 
diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java
index 4f4d0aa35418321ab9599804e3d57a61e956ee44..39af292166cd1a17c9f90bba024c8ef075c0dbfc 100644
--- a/src/main/java/view/FirefighterGrid.java
+++ b/src/main/java/view/FirefighterGrid.java
@@ -45,8 +45,10 @@ public class FirefighterGrid extends Canvas {
                 gc.setFill(Color.BLUE);  // Firefighter is blue
             }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) {
+                gc.setFill(Color.GREEN);
             } else {
                 gc.setFill(Color.WHITE);  // Empty space is white
             }