diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin
index a8f96d75e06c648f54523535192c0778b5ebbf13..fbbec4bc8173cedc3afbb4b7ab14acb0997cbb50 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 82c86cabe8e28e7e1cc8922b1aa181f7d4a721aa..98093e015bf73252d37edf85423197b5ea764caa 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 8477a2464b3725af3e04b824f9c1264a39c25f8e..ba6fa9175ae3eaaad41652ce0faab1d37466bfcf 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 3b9fab559fcbf131fd719c12b0635ce3bb71ef8a..6a4ef9dcc1250cfe5c5414c2a5ada998cf6bca97 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 c8f08e9807b5c74a3c7192f0c0b45de7f17b08b8..e6c74ff88440a2ff33bb4e0843527d65ea3ab492 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 59300afb8dff4a66b15052eed24bbf756b523406..4f01d48e5400a253886033ccfa8fd4dacb0c21af 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class
index f9f16e239ccd20b1d1fa268b802f40f47bf13cf3..de853c12783d647992fcf4e7ca958c1a6377670b 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/BoardFireFighterBehavior.class b/build/classes/java/main/model/BoardFireFighterBehavior.class
index bc326b5aa19727898f4ac7f353a0696dbd3ae8df..9151be9a956136fe5fe3a0fd07783409fd570deb 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 77ae15b80a2fa9f3695271d7938e3cd301cd1031..1705f8be13c2665ff1c36c425c8182c0e8943fe3 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/view/ViewElement.class b/build/classes/java/main/view/ViewElement.class
index c6622dc9bfccb1bfb8c231f1126d891a26fca602..bb1c39d028cb3e62caebe67d080cf68269b12ae6 100644
Binary files a/build/classes/java/main/view/ViewElement.class and b/build/classes/java/main/view/ViewElement.class differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index a722c5845a8b0a1dd2e4f036f32407b625b41c76..0fdd7c3d56d8dacd1766eb2295a3b168273368b0 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/controller/Controller.java b/src/main/java/controller/Controller.java
index 8b5c08dc89684de174a1bd32d7851e432430a13c..c306d799ca76c731d7415dd67bfec1969e1cd756 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -97,6 +97,10 @@ public class Controller {
       {
         return ViewElement.MOUNTAIN;
       }
+      if (element instanceof Road)
+      {
+        return ViewElement.ROAD;
+      }
 
     }
     return ViewElement.EMPTY;
diff --git a/src/main/java/model/BoardFireFighterBehavior.java b/src/main/java/model/BoardFireFighterBehavior.java
index f1a4ad96655ce8cf7fa9e5fc3656b11f394b0de3..5daf21cf6daf7f26d2cbbc44b13b89e5cf803de1 100644
--- a/src/main/java/model/BoardFireFighterBehavior.java
+++ b/src/main/java/model/BoardFireFighterBehavior.java
@@ -57,6 +57,7 @@ public class BoardFireFighterBehavior implements BoardBehavior{
             motorizedFighters.add(motorizedFirefighter.getPosition());
         }
         generateMountainBlocks(rowCount, columnCount);
+        generateRoads(rowCount,columnCount);
 
     }
 
@@ -332,6 +333,47 @@ public class BoardFireFighterBehavior implements BoardBehavior{
 
         return true;  // La position est traversable
     }
+    private void generateRoads(int rowCount, int columnCount) {
+        Random random = new Random();
+        int maxRoads = 3;  // Par exemple, générer 3 routes
+        int roadLength = 5; // Longueur de chaque route (5 cases)
+
+        for (int i = 0; i < maxRoads; i++) {
+            int startRow = random.nextInt(rowCount);  // L'index de départ de la route
+            int startCol = random.nextInt(columnCount);
+
+            // Créer une route uniquement si la position est valide
+            if (canPlaceRoad(startRow, startCol, roadLength,columnCount)) {
+                placeRoad(startRow, startCol, roadLength);
+            }
+        }
+    }
+
+    private boolean canPlaceRoad(int startRow, int startCol, int roadLength,int columnCount) {
+        // Vérifier si la ligne droite de la route peut être placée sans dépasser les bords
+        if (startCol + roadLength >  columnCount) { // Vérifie si la route dépasse la largeur de la grille
+            return false;
+        }
+
+        // Vérifier que toutes les cases sont libres avant de placer la route
+        for (int i = 0; i < roadLength; i++) {
+            Position pos = new Position(startRow, startCol + i);
+            if (terrainMap.containsKey(pos)) {
+                return false;  // Une case est déjà occupée
+            }
+        }
+
+        return true;
+    }
+
+    private void placeRoad(int startRow, int startCol, int roadLength) {
+        // Placer une route (ligne droite) sur la grille
+        for (int i = 0; i < roadLength; i++) {
+            Position pos = new Position(startRow, startCol + i);
+            terrainMap.put(pos, new Road(pos));  // Placer une route à chaque case
+        }
+    }
+
 
 
 
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index 43a164ec19d71b6238f82c832fa251b264760e42..887afb218a5f7c5097f98cefbcf9daa688a624cb 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -69,6 +69,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
         result.add((Mountain) value); // Ajouter uniquement un objet Mountain
       }
     });
+    behavior.getTerrainMap().forEach((pos, value) -> {
+      if (pos.isAtPosition(position) && value instanceof Road) {
+        result.add((Road) value); // Ajouter uniquement un objet Mountain
+      }
+    });
 
     return result;
   }
diff --git a/src/main/java/model/Mountain.java b/src/main/java/model/Mountain.java
index 913da87cd4c3e9f6d2bb35f0db52a4f4a12f0316..4abca344ba224accebc1d398c234f69b13acdc62 100644
--- a/src/main/java/model/Mountain.java
+++ b/src/main/java/model/Mountain.java
@@ -17,13 +17,13 @@ public class Mountain extends BoardElement implements Terrain {
     public String toString() {
         return null;
     }
-
-    public static boolean isTraversableByFire() {
+    @Override
+    public  boolean isTraversableByFire() {
         return false; // Les montagnes ne sont pas franchissables par le feu
     }
 
-
-    public static boolean isTraversableByFirefighter() {
+    @Override
+    public  boolean isTraversableByFirefighter() {
         return false; // Les pompiers ne peuvent pas passer non plus
     }
 }
diff --git a/src/main/java/model/Road.java b/src/main/java/model/Road.java
index 7d28ecfd77b2f200dee6b9e3ac01d20d9f0a52ca..ee3d8d5774774bee5c5df887bb687e717064c55c 100644
--- a/src/main/java/model/Road.java
+++ b/src/main/java/model/Road.java
@@ -1,4 +1,29 @@
 package model;
 
-public class Road {
+import util.Position;
+
+public class Road extends BoardElement implements Terrain{
+    public Road(Position position) {
+        super(position);
+    }
+
+    @Override
+    public String getType() {
+        return null;
+    }
+
+    @Override
+    public String toString() {
+        return null;
+    }
+
+    @Override
+    public boolean isTraversableByFire() {
+        return false;
+    }
+
+    @Override
+    public boolean isTraversableByFirefighter() {
+        return true;
+    }
 }
diff --git a/src/main/java/model/Terrain.java b/src/main/java/model/Terrain.java
index 61baa9799274892bc75510775a38e0cefecdff90..bc195166771072bfc1dbf44327a6b35973b4a078 100644
--- a/src/main/java/model/Terrain.java
+++ b/src/main/java/model/Terrain.java
@@ -2,12 +2,7 @@ package model;
 
 
 public interface Terrain {
-        static boolean isTraversableByFire() {
-                return false;
-        }
-
-        static boolean isTraversableByFirefighter() {
-                return false;
-        }
+        boolean isTraversableByFire();
+        boolean isTraversableByFirefighter();
 }
 
diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java
index b9f1e855b6f050a4e9a85413ba250436ff7ad8f7..ae5bb575a728aaa4a5e946c8b064213dc8b401e1 100644
--- a/src/main/java/view/ViewElement.java
+++ b/src/main/java/view/ViewElement.java
@@ -3,7 +3,8 @@ package view;
 import javafx.scene.paint.Color;
 
 public enum ViewElement {
-  FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE) ,  CLOUD(Color.GRAY),MOTORIZED(Color.BLACK) , MOUNTAIN(Color.GREEN), ROCKY(Color.BLACK);
+  FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE) ,  CLOUD(Color.GRAY),MOTORIZED(Color.BLACK) , MOUNTAIN(Color.GREEN), ROCKY(Color.BLACK),
+  ROAD(Color.BROWN);
   final Color color;
   ViewElement(Color color) {
     this.color = color;