diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin
index e93c865cf1b72472cfa682758e98c3bb522c8cad..24f92def9427e1eb2fb7fa1d1b80b802329454ce 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 31a3a0a39e4212e4bc2c34425978194b02bdcfe2..b9623e111c2e3519d0d7451ff86d8c40bb498974 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 f45170b79721d972e35a42e3798d8da1c3dfb235..e6735fb5271f9b0ac021a90356e43e33b935e1b1 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 d5807fc55d5cdf8cc4db7c81c513ad88e7990446..1ef521d2fc05d60bf08236e1f7d536db41e93026 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 361ed8b74ba2225b1a38375ee4383f86dda21659..523eb83b498d61d5ed383b33e97a1e7d6942c023 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 1fa5114eb746698d290ca8906720c193c02e035f..4010607332a77182bc40b7835e59dd12503bbd11 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 c6949c5db30d34f39a15fc024f10e72ebe0dd2d0..83f842461bbbc81062b3633e7a0bcc6a515f6fa3 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 512cf272c882b47442e9f88abc2113d1a37fc039..f9f16e239ccd20b1d1fa268b802f40f47bf13cf3 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/BoardElement.class b/build/classes/java/main/model/BoardElement.class
index 3dd8554cc2b26635b757e21bbcdc9bf3a97ec9ee..f13c75608e22866d9214df4c37452027e16e2464 100644
Binary files a/build/classes/java/main/model/BoardElement.class and b/build/classes/java/main/model/BoardElement.class differ
diff --git a/build/classes/java/main/model/BoardFireFighterBehavior.class b/build/classes/java/main/model/BoardFireFighterBehavior.class
index 1c537c58c8f903db8eeb2551e27ea4e4cbe95cad..c98e1d5ce384655a278c407abf4fad53ad459ff8 100644
Binary files a/build/classes/java/main/model/BoardFireFighterBehavior.class and b/build/classes/java/main/model/BoardFireFighterBehavior.class differ
diff --git a/build/classes/java/main/model/FirefighterBoard.class b/build/classes/java/main/model/FirefighterBoard.class
index 4464d98f7f268fd5b894fa609ae2ce2ed9c8b61e..77ae15b80a2fa9f3695271d7938e3cd301cd1031 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/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 68d5fbf7aa7887e8aba2f4d66d95ef312b18474f..1152e60afc282930b6f0635125dafd3d642ca116 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 b902612a14c0f5327dfaac5836f0090ab6e80245..bff0ea47cef5a22420975952fc0c7b4ba1f89bec 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -18,7 +18,7 @@ public class SimulatorApplication extends javafx.application.Application {
   private static final int BOX_WIDTH = 50;
   private static final int BOX_HEIGHT = 50;
   public static final int INITIAL_FIRE_COUNT = 3;
-  public static final int INITIAL_FIREFIGHTER_COUNT = 0;
+  public static final int INITIAL_FIREFIGHTER_COUNT = 3;
   public static final int INITIAL_CLOUD_COUNT = 3;
   public static final int INITIAL_MOTORIZED_COUNT = 3;
 
diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index 767265b176175e8171d8d4c51229016f173d2e2c..8b5c08dc89684de174a1bd32d7851e432430a13c 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -93,6 +93,10 @@ public class Controller {
       {
         return ViewElement.MOTORIZED;
       }
+      if(element instanceof Mountain)
+      {
+        return ViewElement.MOUNTAIN;
+      }
 
     }
     return ViewElement.EMPTY;
diff --git a/src/main/java/model/BoardElement.java b/src/main/java/model/BoardElement.java
index 9a403ac16a13f0db51f491dc7433a78521c80f2e..c17510824ac41bf28a02ff347205b55801c3672e 100644
--- a/src/main/java/model/BoardElement.java
+++ b/src/main/java/model/BoardElement.java
@@ -16,10 +16,6 @@ public abstract class BoardElement implements ModelElement{
     public void setPosition(Position position) {
         this.position = position;
     }
-    public boolean isAtPosition(Position position) {
-        return this.position.equals(position);
-    }
-
     public abstract String getType(); // Ajout de la méthode abstraite
 
 
diff --git a/src/main/java/model/BoardFireFighterBehavior.java b/src/main/java/model/BoardFireFighterBehavior.java
index d5195ecbba9119f20075394a02a0a5b90a74abca..4e5debedc6ee6ad8cc8d4f7083b3ecfbda5393f4 100644
--- a/src/main/java/model/BoardFireFighterBehavior.java
+++ b/src/main/java/model/BoardFireFighterBehavior.java
@@ -16,6 +16,7 @@ public class BoardFireFighterBehavior implements BoardBehavior{
     private final ElementFactory<Cloud> cloudFactory;
     private final ElementFactory<MotorizedFireFighter> motorizedFactory;
     private List<Position> cloudPositions;
+    private final Map<Position, Terrain> terrainMap = new HashMap<>();
     private int step;
 
     public BoardFireFighterBehavior(Map<Position, List<Position>> neighbors, ElementFactory<Fire> fireFactory ,ElementFactory<FireFighter> firefighterFactory,
@@ -55,6 +56,7 @@ public class BoardFireFighterBehavior implements BoardBehavior{
         for (MotorizedFireFighter motorizedFirefighter : motorizedFirefighters) {
             motorizedFighters.add(motorizedFirefighter.getPosition());
         }
+        generateMountainBlocks(rowCount, columnCount);
 
     }
 
@@ -218,4 +220,49 @@ public class BoardFireFighterBehavior implements BoardBehavior{
     public List<Position> getMotorizedFighters() {
         return motorizedFighters;
     }
+    private void generateMountainBlocks(int rowCount, int columnCount) {
+        Random random = new Random();
+        int maxMountains = 5; // Par exemple, générer 5 blocs de montagnes
+        int blockSize = 4; // Taille du bloc de montagnes (4 cases)
+
+        for (int i = 0; i < maxMountains; i++) {
+            // Générer un coin aléatoire pour chaque bloc de montagne (en s'assurant que les blocs ne dépassent pas la grille)
+            int startRow = random.nextInt(rowCount - 1);  // -1 pour éviter le débordement
+            int startCol = random.nextInt(columnCount - 1);
+
+            // Vérifier si les cases sont libres avant d'y placer une montagne
+            if (canPlaceMountainBlock(startRow, startCol)) {
+                // Placer les montagnes sur la grille
+                placeMountainBlock(startRow, startCol);
+            }
+        }
+    }
+
+    private boolean canPlaceMountainBlock(int startRow, int startCol) {
+        // Vérifier si les 4 cases sont libres
+        for (int row = startRow; row < startRow + 2; row++) {
+            for (int col = startCol; col < startCol + 2; col++) {
+                Position pos = new Position(row, col);
+                if (terrainMap.containsKey(pos)) {
+                    return false; // Une case est déjà occupée
+                }
+            }
+        }
+        return true; // Toutes les cases sont libres
+    }
+
+    private void placeMountainBlock(int startRow, int startCol) {
+        // Placer les 4 cases de montagne
+        for (int row = startRow; row < startRow + 2; row++) {
+            for (int col = startCol; col < startCol + 2; col++) {
+                Position pos = new Position(row, col);
+                terrainMap.put(pos, new Mountain(pos));
+            }
+        }
+    }
+
+    public Map<Position, Terrain> getTerrainMap() {
+        return terrainMap;
+    }
+
 }
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index 04b2acfe41b488e680720770f6cb6dc908db1a70..43a164ec19d71b6238f82c832fa251b264760e42 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -64,6 +64,12 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
             .filter(pos -> pos.isAtPosition(position))
             .forEach(pos -> result.add(new MotorizedFireFighter(pos)));
 
+    behavior.getTerrainMap().forEach((pos, value) -> {
+      if (pos.isAtPosition(position) && value instanceof Mountain) {
+        result.add((Mountain) value); // Ajouter uniquement un objet Mountain
+      }
+    });
+
     return result;
   }
 
diff --git a/src/main/java/model/MotorizedFireFighter.java b/src/main/java/model/MotorizedFireFighter.java
index 4a88631dea86584bd0caac93644c8649a77bb8f0..4a1fe7ef57d1c180d5ce890c22ca813730664152 100644
--- a/src/main/java/model/MotorizedFireFighter.java
+++ b/src/main/java/model/MotorizedFireFighter.java
@@ -11,6 +11,7 @@ public class MotorizedFireFighter extends BoardElement{
         super(position);
     }
 
+
     @Override
     public String getType() {
         return "MotorizedFireFighter";
diff --git a/src/main/java/model/Mountain.java b/src/main/java/model/Mountain.java
new file mode 100644
index 0000000000000000000000000000000000000000..ddc825c8b30eb7d31ac2103d728d8f6ddc855bd4
--- /dev/null
+++ b/src/main/java/model/Mountain.java
@@ -0,0 +1,29 @@
+package model;
+
+import util.Position;
+
+public class Mountain extends BoardElement implements Terrain {
+
+    public Mountain(Position position) {
+        super(position);
+    }
+
+    @Override
+    public String getType() {
+        return null;
+    }
+
+    @Override
+    public String toString() {
+        return null;
+    }
+    @Override
+    public boolean isTraversableByFire() {
+        return false; // Les montagnes ne sont pas franchissables par le feu
+    }
+
+    @Override
+    public boolean isTraversableByFirefighter() {
+        return false; // Les pompiers ne peuvent pas passer non plus
+    }
+}
diff --git a/src/main/java/model/Terrain.java b/src/main/java/model/Terrain.java
new file mode 100644
index 0000000000000000000000000000000000000000..bc195166771072bfc1dbf44327a6b35973b4a078
--- /dev/null
+++ b/src/main/java/model/Terrain.java
@@ -0,0 +1,8 @@
+package model;
+
+
+public interface Terrain {
+        boolean isTraversableByFire();
+        boolean isTraversableByFirefighter();
+}
+