diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java
index 241535ad21caa88d9dc9f06805b63b0593d3a18b..4121b6be45ff8815913f414f8a36c395282bfdb5 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_CLOUD_COUNT = 15;
   public static final int INITIAL_MOTORIZEDFIREFIGHTER_COUNT = 2;
   public static final int INITIAL_MOUNTAIN_COUNT = 15;
+  public static final int INITIAL_ROAD_COUNT =5;
 
   private Stage primaryStage;
   private Parent view;
@@ -47,7 +48,7 @@ public class SimulatorApplication extends javafx.application.Application {
     view = loader.load();
     Controller controller = loader.getController();
     controller.initialize(SQUARE_WIDTH, SQUARE_HEIGHT, COLUMN_COUNT, ROW_COUNT,
-            INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT,INITIAL_MOTORIZEDFIREFIGHTER_COUNT,INITIAL_MOUNTAIN_COUNT);
+            INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT,INITIAL_MOTORIZEDFIREFIGHTER_COUNT,INITIAL_MOUNTAIN_COUNT, INITIAL_ROAD_COUNT);
   }
 
   private void showScene() {
diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index b5f3cde65a57cbee5305ac5b521a9d103828d9a3..34a41d03e653983dd5d537da75c6520b0386340a 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -112,9 +112,9 @@ public class Controller {
   }
 
   public void initialize(int squareWidth, int squareHeight, int columnCount,
-                         int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialMotorizedFireFighterCount,int initialMountainCount) {
+                         int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialMotorizedFireFighterCount,int initialMountainCount, int initialRoadCount) {
     grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
-    board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount,initialCloudCount,initialMotorizedFireFighterCount,initialMountainCount);
+    board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount,initialCloudCount,initialMotorizedFireFighterCount  ,initialMountainCount /*,initialRoadCount*/);
     board.initializeElements();
     repaintGrid();
   }
diff --git a/src/main/java/model/Builder/GameManage.java b/src/main/java/model/Builder/GameManage.java
index da84d515d4ddd1c00fd90cfe8b1dcf462f23d85a..e4b5e1cde87375bcab8f3d9a3d4621b1dc8322a0 100644
--- a/src/main/java/model/Builder/GameManage.java
+++ b/src/main/java/model/Builder/GameManage.java
@@ -6,6 +6,7 @@ import model.ExtinguishFire.FireFighter;
 import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
 import model.Obstacle.Mountain;
+import model.Obstacle.Road;
 
 public class GameManage {
     private final int fires;
@@ -30,28 +31,34 @@ public class GameManage {
         Initialize();
     }
 
-    public void Initialize(){
-        for(int i=0;i<fires;i++) {
+    public void Initialize() {
+        for (int i = 0; i < fires; i++) {
             new Fire(Color.RED);
         }
-        for(int i=0;i<firefighters;i++) {
+        for (int i = 0; i < firefighters; i++) {
             new FireFighter(Color.BLUE);
         }
-        for(int i=0;i<clouds;i++) {
+        for (int i = 0; i < clouds; i++) {
             new Cloud(Color.LIGHTBLUE);
         }
-        for(int i=0;i<motorizedFireFighters;i++) {
+        for (int i = 0; i < motorizedFireFighters; i++) {
             new MotorizedFireFighter(Color.GREENYELLOW);
         }
 
         /*for(int i=0;i<rocailles;i++) {
             new Rocailles(Color.GREY);
         }*/
-        for(int i=0;i<mountains;i++) {
-            new Mountain(Color.GREY);
+
+        for (int i = 0; i < roads; i++) {
+            new Road(Color.DIMGREY);
         }
-        // TODO: 15/11/2023  la suite .... aussi l'initialisation va changer dans fire et firefighter
-    }
 
-}
+
+            for (int i = 0; i < mountains; i++) {
+                new Mountain(Color.GREY);
+            }
+            // TODO: 15/11/2023  la suite .... aussi l'initialisation va changer dans fire et firefighter
+        }
+
+    }
 
diff --git a/src/main/java/model/Obstacle/Road.java b/src/main/java/model/Obstacle/Road.java
index 70a0adb708ca4b522d16564840512561ccc1c34a..c7f740e4bffca69b11f623052719e58471702a07 100644
--- a/src/main/java/model/Obstacle/Road.java
+++ b/src/main/java/model/Obstacle/Road.java
@@ -1,4 +1,56 @@
 package model.Obstacle;
 
-public class Road {
+import javafx.scene.paint.Color;
+import model.BoardElement;
+import model.GameBoard;
+import model.Visitor.Visitor;
+import util.Position;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import static model.GameBoard.elementPosition;
+
+/*public class Road {
+}*/
+public class Road implements Obstacles{
+
+    private final Color color;
+
+    public Road(Color color){
+        this.color=color;
+        initialize();
+    }
+    @Override
+    public Color getColor() {
+        return color;
+    }
+
+    @Override
+    public Boolean accept(Visitor visitor) {
+        return visitor.visit(this);
+    }
+
+    @Override
+    public void initialize() {
+        Position position = GameBoard.randomPosition();
+        if (elementPosition.containsKey(position))
+            elementPosition.get(position).add(this);
+        else {
+            ArrayList<BoardElement> boardElements = new ArrayList<>();
+            boardElements.add(this);
+            elementPosition.put(position, boardElements);
+        }
+    }
+
+    @Override
+    public void update(GameBoard gameBoard, Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) {
+        if(newElementPosition.containsKey(position))
+            newElementPosition.get(position).add(this);
+        else{
+            ArrayList<BoardElement> boardElements = new ArrayList<>();
+            boardElements.add(this);
+            newElementPosition.put(position,boardElements);
+        }
+    }
 }