diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin
index 3e4639d57db2abe6148564a234c45370d5e4f266..d272bec8c57c280c71a26cb9b0aa10bf9f185d95 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 cad55c85b0edb7433bfcc8ff5ccf9b8e6310b129..2f4203bae8d2a9c93bc24f9885e80fbd8ed8195e 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 7476ae7e5dcc880edb67c3e9b854d8b563ce19d8..e9c1239a490550c9a7aafb79ea24146e616cbe0d 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 71521cbbf74ba9f9d3d61376d6f5dced1ae5f5df..1b189eae87aec7e4ebe829113003dcaecfda3b4e 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 28ccbc5f765f594e3787667963b3d02f13bbb0a2..0aeba1240cd74ee4653e37f5f98873ffe354b6ab 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 e353ce8b190d126c22bf0c729790b617b1d8de75..cc5b4199f6c5be3ce5ef9cc7e3475cbf712d34eb 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 c794404c6048e287bfab3f8470f8f2b7f3be6126..8cdb4ed274b5f200e38a2680759e2fac291ccc49 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/model/FirefighterBoard$1.class b/build/classes/java/main/model/FirefighterBoard$1.class
index 36139e86884c256a348af7e1b2a13b5fa944c975..340e59817ded726fe7aa0bc607d15840ee0e0c47 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 b3d66851b3b43c4fdec982337842d718207d4bf5..5d0dad747dedc784fd9b0104c23704c1fac1e7e3 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 ab695532d616c8cf4fa9ac577236893340a8bc44..fe891d9e06c9418e7108a3585c3bace42b77ae48 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 18e46ef5be06988a93fa104fac2993de3f3c5349..37d92b1265d1f3a542d09824b51c0426c2cbafa8 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/classes/java/main/view/ViewElement.class b/build/classes/java/main/view/ViewElement.class
index 6e0ba4cb9d010f7ec89661d33c7f27a0eeba7153..13960325fcfe0d305876ea83d4af1b454e819c14 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 2f99c47529d3dbdf3ba71e7bb213540604f17fe6..4ec4d11099f238606374670516d33c8f2f1da147 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 4bd8909e472206491ec6693fe84bcc6342da22d1..31689a20dc0bd9f5bf307eeee5951f019bea16b8 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -20,6 +20,7 @@ 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;
 
     private Stage primaryStage;
     private Parent view;
@@ -47,7 +48,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_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_ROAD_COUNT,INITIAL_CLAUD_COUNT);
     }
 
     private void showScene() {
diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index 988c916cc3b284d9ecae1b112a2364401620d193..8800ae20468a081bb23742381f360a45a7fbb224 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) {
+  public void initialize(int boxWidth, int boxHeight, int columns, int rows, int fireCount, int firefighterCount, int initialRoadCount,int initialclaudCount) {
     // Initialize the simulation board and connect it to the grid
-    board = new FirefighterBoard(columns, rows, fireCount, firefighterCount, initialRoadCount);
+    board = new FirefighterBoard(columns, rows, fireCount, firefighterCount, initialRoadCount,initialclaudCount);
     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 61a83b0bfe511c82f59de9055f2da8abcf4c6a4d..e545e7094ef5576f816ce0e6b9ca052968ef18ee 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -11,9 +11,12 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     private final int rowCount;
     private final int initialFireCount;
     private final int initialFirefighterCount;
+    private final int initialRoadCount;
+    private final int initialcloudCount;
 
     private List<Position> firefighterPositions;
     private Set<Position> firePositions;
+    private Set<Position> roadPositions;
     private final Map<Position, List<Position>> neighbors;
     private final Position[][] positions;
     private List<Position> cloudPositions;
@@ -21,17 +24,20 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     private int step = 0;
 
     // Constructor for FirefighterBoard
-    public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount) {
+    public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount, int initialcloudCount) {
         this.columnCount = columnCount;
         this.rowCount = rowCount;
         this.initialFireCount = initialFireCount;
         this.initialFirefighterCount = initialFirefighterCount;
+        this.initialRoadCount = initialRoadCount;
+        this.initialcloudCount = initialcloudCount;
 
         this.positions = new Position[rowCount][columnCount];
         this.firefighterPositions = new ArrayList<>();
         this.firePositions = new HashSet<>();
         this.neighbors = new HashMap<>();
         this.cloudPositions = new ArrayList<>();
+        this.roadPositions = new HashSet<>();
 
         initializeBoard();
     }
@@ -48,6 +54,15 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
         for (int i = 0; i < initialFirefighterCount; i++) {
             firefighterPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
         }
+        // Initialize road positions
+        for (int i = 0; i < initialRoadCount; i++) {
+            roadPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
+        }
+        // Initialize road positions
+        for (int i = 0; i < initialcloudCount; i++) {
+            cloudPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
+        }
+
 
         // Initialize neighbors map
         for (int row = 0; row < rowCount; row++) {
@@ -87,6 +102,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
                         result.add(ModelElement.CLOUD);
                     }
                 }
+                case ROAD -> {
+                    if (roadPositions.contains(position)) {
+                        result.add(ModelElement.ROAD);
+                    }
+                }
                 default ->{
                 }
             }
@@ -112,10 +132,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     @Override
     public void reset() {
         step = 0;
-        Initializer initializer = new Initializer(columnCount,rowCount,initialFireCount,initialFirefighterCount);
+        Initializer initializer = new Initializer(columnCount,rowCount,initialFireCount,initialFirefighterCount, initialRoadCount,initialcloudCount);
         resetPos(firePositions,initializer.getFirePositions());
         resetPos(firefighterPositions,initializer.getFirefighterPositions());
         resetPos(cloudPositions,initializer.getCloudPositions());
+        resetPos(roadPositions,initializer.getRoadPositions());
 
         neighbors.clear();
         neighbors.putAll(initializer.getNeighbors());
@@ -204,6 +225,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
         for (Position cloudPosition : cloudPositions) {
             updatedElements.add(new Pair<>(cloudPosition, ModelElement.CLOUD));
         }
+        // Add firefighter positions
+        for (Position cloudPosition : cloudPositions) {
+            updatedElements.add(new Pair<>(cloudPosition, ModelElement.CLOUD));
+        }
+        for (Position roadPosition : roadPositions) {
+            updatedElements.add(new Pair<>(roadPosition, ModelElement.ROAD));
+        }
 
         return updatedElements;
     }
diff --git a/src/main/java/model/Initializer.java b/src/main/java/model/Initializer.java
index df94f62c86ad9ee9d36d296f182c41eafe316d5b..b5d4dde0a076dfdd233334b6b9d7f9a63ef3038e 100644
--- a/src/main/java/model/Initializer.java
+++ b/src/main/java/model/Initializer.java
@@ -10,6 +10,7 @@ public class Initializer {
     private final int initialFireCount;
     private final int initialFirefighterCount;
     private final int initialRoadCount;
+    private final int initialcloudCount;
 
     private final Position[][] positions;
     private final Map<Position, List<Position>> neighbors;
@@ -24,12 +25,13 @@ public class Initializer {
     private static final int cloudCount = 3;
 
 
-    public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount) {
+    public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount,int initialcloudCount) {
         this.columnCount = columnCount;
         this.rowCount = rowCount;
         this.initialFireCount = initialFireCount;
         this.initialFirefighterCount = initialFirefighterCount;
         this.initialRoadCount = initialRoadCount;
+        this.initialcloudCount = initialcloudCount;
 
         this.positions = new Position[rowCount][columnCount];
         this.neighbors = new HashMap<>();
@@ -62,6 +64,7 @@ public class Initializer {
         initializeFirePositions();
         initializeFirefighters();
         initializeRoadPositions();
+        initializeCloudsPositions();
 
     }
     private void initializeFirePositions() {
@@ -70,11 +73,13 @@ public class Initializer {
     private void initializeFirefighters() {
             addRandomPositions(firefighterPositions, initialFirefighterCount);
     }
-    private void initializeRoadPositions() {addRandomPositions(RoadPositions, initialRoadCount);}
+    private void initializeRoadPositions() {
+        addRandomPositions(RoadPositions, initialRoadCount);}
     private void initializeCloudsPositions() {
         addRandomPositions(cloudPositions, cloudCount);
     }
 
+
     private void addRandomPositions(Collection<Position> targetCollection, int count) {
         while (targetCollection.size() < count) {
             Position randomPosition = randomPosition();
@@ -121,6 +126,9 @@ public class Initializer {
     public Set<Position> getFirePositions() {
         return firePositions;
     }
+    public List<Position> getRoadPositions() {
+        return RoadPositions;
+    }
     public List<Position> getCloudPositions() {return cloudPositions;}
     public int getStep() {return step;}
 
diff --git a/src/main/java/model/ModelElement.java b/src/main/java/model/ModelElement.java
index aa0ba36d2d22820408a534be5e919589025a3cde..8a0f27b21509a2424ae25f2c8309a8d885b2ff72 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");
+  FIREFIGHTER("blue"), FIRE("red"), CLOUD("darkgrey"),ROAD("grey"),EMPTY("white");
 
   private final String color;
 
diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java
index 120b3a06f34b2afe1c493909a72da7a33c6b5fb9..4f4d0aa35418321ab9599804e3d57a61e956ee44 100644
--- a/src/main/java/view/FirefighterGrid.java
+++ b/src/main/java/view/FirefighterGrid.java
@@ -41,12 +41,11 @@ 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){
-                gc.setFill(Color.GRAY);
-            }else {
-            } else if (element == ModelElement.CLOUD){
+            }else if (element== ModelElement.ROAD){
+                gc.setFill(Color.WHITE);
+            }else if (element == ModelElement.CLOUD){
                 gc.setFill(Color.YELLOW);
             } else {
                 gc.setFill(Color.WHITE);  // Empty space is white
diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java
index c6eed4765158ba7922fd384c38ba8e6df8b16191..0c4f09ea7dcf7f85f785374602c50b5a022a0c82 100644
--- a/src/main/java/view/ViewElement.java
+++ b/src/main/java/view/ViewElement.java
@@ -3,7 +3,7 @@ package view;
 import javafx.scene.paint.Color;
 
 public enum ViewElement {
- ROAD(Color.GRAY), FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE);
+ ROAD(Color.GRAY), FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE),CLAUD(Color.YELLOW);
 
   final Color color;