diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin
index cd185bc582a0f489888b574664842f97427b3965..14de053e2be6fbb2ca7891822fcb1d5eb3ead8d2 100644
Binary files a/.gradle/8.4/executionHistory/executionHistory.bin and b/.gradle/8.4/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.4/executionHistory/executionHistory.lock b/.gradle/8.4/executionHistory/executionHistory.lock
index b0eb98842eda3fa8e9d6fde7acfb58ee0504e7c4..c87fcc9349a2ef81dfe68895e7011b540ebe0730 100644
Binary files a/.gradle/8.4/executionHistory/executionHistory.lock and b/.gradle/8.4/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.4/fileHashes/fileHashes.bin b/.gradle/8.4/fileHashes/fileHashes.bin
index a6033345fa086c28fa693303e7b630d6d3d901cb..ee1911fe5301189769c38cd829c3ffe30c08f0a9 100644
Binary files a/.gradle/8.4/fileHashes/fileHashes.bin and b/.gradle/8.4/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.4/fileHashes/fileHashes.lock b/.gradle/8.4/fileHashes/fileHashes.lock
index da13ab9353ced83645c5559a785a24c30dd34000..a6b915a90cb046cfc12791a367d93eeb30bd8cf0 100644
Binary files a/.gradle/8.4/fileHashes/fileHashes.lock and b/.gradle/8.4/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.4/fileHashes/resourceHashesCache.bin b/.gradle/8.4/fileHashes/resourceHashesCache.bin
index 140ab407c66bf092f43e885dfedaf6efe6f82fea..6cd79388e76bb5f34544f1b41604251d8437dcb1 100644
Binary files a/.gradle/8.4/fileHashes/resourceHashesCache.bin and b/.gradle/8.4/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 72a5e081814c347e779fc9a70999b4a39d950740..7903126a0dcdbfde39041e8a6de5812e36679bf7 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
index e4dbcd26775b77fdd318f2e906aa0ebb05955632..9950dc5e73e58206fe7f141e701e984fedcc0ab0 100644
Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index e892a491542e10fac2c062d573d9d0cd0dc4280c..d9291c52f11415278b548b676f495d34ee06357e 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/build/classes/java/main/app/SimulatorApplication.class b/build/classes/java/main/app/SimulatorApplication.class
index b20b834ef489ed0cfcf6f12e7993b40632a049e9..2792d63b92517bb76234c95f54d1ac8669770999 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 181db60987ef9e8df666c370fc44325db0cb5a41..74013efab5e05f9243deca053906751ea238f241 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/Builder/FireFirefighterBuilder.class b/build/classes/java/main/model/Builder/FireFirefighterBuilder.class
deleted file mode 100644
index 3b2ad97b21e91b398e478584610878b453c607cf..0000000000000000000000000000000000000000
Binary files a/build/classes/java/main/model/Builder/FireFirefighterBuilder.class and /dev/null differ
diff --git a/build/classes/java/main/model/Builder/GameManage.class b/build/classes/java/main/model/Builder/GameManage.class
index 2720adbd99507a45b7ab9771d0535a07fb653449..af3536b151a408b96923e5356e098c9e646509d4 100644
Binary files a/build/classes/java/main/model/Builder/GameManage.class and b/build/classes/java/main/model/Builder/GameManage.class differ
diff --git a/build/classes/java/main/model/ExtinguishFire/Cloud.class b/build/classes/java/main/model/ExtinguishFire/Cloud.class
index 9de56c2328937cd36048ec37406dc9240e0c39b7..dd940b0174a4a149abcf9599d409366672fda4e4 100644
Binary files a/build/classes/java/main/model/ExtinguishFire/Cloud.class and b/build/classes/java/main/model/ExtinguishFire/Cloud.class differ
diff --git a/build/classes/java/main/model/Flammable/Fire.class b/build/classes/java/main/model/Flammable/Fire.class
index a63719c958047acc25830722191a24670a97cbad..c26b25067e3470b44d70d004d5f4c57388352c7a 100644
Binary files a/build/classes/java/main/model/Flammable/Fire.class and b/build/classes/java/main/model/Flammable/Fire.class differ
diff --git a/build/classes/java/main/model/GameBoard.class b/build/classes/java/main/model/GameBoard.class
index e7f7e68c6824b75a0258c2c6ecb4cd1b9dee4da3..9a2ab100b7a3ff1b6282d6ac48938001da2a7bdb 100644
Binary files a/build/classes/java/main/model/GameBoard.class and b/build/classes/java/main/model/GameBoard.class differ
diff --git a/build/classes/java/main/model/Visitor/CrossMountain.class b/build/classes/java/main/model/Visitor/CrossMountain.class
index ddbfddb8f7cee6c257ddbd45252852a741b3db40..69f63f7cd3d38ef2cee410a9416eee60dd7cfd4f 100644
Binary files a/build/classes/java/main/model/Visitor/CrossMountain.class and b/build/classes/java/main/model/Visitor/CrossMountain.class differ
diff --git a/build/classes/java/main/model/Visitor/CrossRoad.class b/build/classes/java/main/model/Visitor/CrossRoad.class
index ee0df02352663a36d691bb3081a31d94c5028c0d..6846553e8ac3d3e4fee6d99e85266f45c4b7a798 100644
Binary files a/build/classes/java/main/model/Visitor/CrossRoad.class and b/build/classes/java/main/model/Visitor/CrossRoad.class differ
diff --git a/build/classes/java/main/model/Visitor/FireFinder.class b/build/classes/java/main/model/Visitor/FireFinder.class
index 05ddcb141f461b8f1e4f42cb7b2c32083b234b7f..3eee0b6a9e0b6ef841b3a41e019f5871a34211a8 100644
Binary files a/build/classes/java/main/model/Visitor/FireFinder.class and b/build/classes/java/main/model/Visitor/FireFinder.class differ
diff --git a/build/classes/java/main/model/Visitor/Visitor.class b/build/classes/java/main/model/Visitor/Visitor.class
index d9ae8e3a8a6375c074840b3b24e35ce02a6d6b1e..6bda2c96ed0d078985d77b993144828ec7de1b9c 100644
Binary files a/build/classes/java/main/model/Visitor/Visitor.class and b/build/classes/java/main/model/Visitor/Visitor.class differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId6
index 8354b4b5e9c51c9a95e1ee282454bcb74bb2799f..74013efab5e05f9243deca053906751ea238f241 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId6 and b/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId6 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId9 b/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId9
index ddbfddb8f7cee6c257ddbd45252852a741b3db40..69f63f7cd3d38ef2cee410a9416eee60dd7cfd4f 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId9 and b/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId9 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId2
index ee0df02352663a36d691bb3081a31d94c5028c0d..6846553e8ac3d3e4fee6d99e85266f45c4b7a798 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId2 and b/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId2 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0
index 6f2ee628168d8278cdfdfcd6b1dcf054d0de7134..a4d622e74ad0dac8a1e1ee24f055fadd19df68df 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0 and b/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId7 b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId7
index dbc166e9ee502ac6e65765ab6e3c1b154cd63a20..c26b25067e3470b44d70d004d5f4c57388352c7a 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId7 and b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId7 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId12 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId12
index fcc4ef03eff562cb121ef55794860a3daacf0c37..02776eb6f209146e6f2de1891a6ecafbc4aa688a 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId12 and b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId12 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId10 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId10
index 05ddcb141f461b8f1e4f42cb7b2c32083b234b7f..3eee0b6a9e0b6ef841b3a41e019f5871a34211a8 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId10 and b/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId10 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId3
index 30eaace75e76ed424baa17b60e2fc62e70bead04..d2bbe7e11dd4d28c3fba73284af14ce15b59f73f 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId3 and b/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId3 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId1
index 4a62fd7300bf6f83c5e5d56996109e985f2f0393..bf120cd5de3e083cfef4bb7079bfbbbd2f05fb97 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId1 and b/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId1 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId14 b/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId14
deleted file mode 100644
index 1244bf4abf2ffc41960daa3df90f9d5147ada260..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId14 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameManage.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/GameManage.class.uniqueId4
index 2720adbd99507a45b7ab9771d0535a07fb653449..af3536b151a408b96923e5356e098c9e646509d4 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/GameManage.class.uniqueId4 and b/build/tmp/compileJava/compileTransaction/stash-dir/GameManage.class.uniqueId4 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Obstacles.class.uniqueId15 b/build/tmp/compileJava/compileTransaction/stash-dir/Obstacles.class.uniqueId15
deleted file mode 100644
index fff48ef4e9967a51eeca54cadce22b98a897ae4c..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Obstacles.class.uniqueId15 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId11 b/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId11
index d9ae8e3a8a6375c074840b3b24e35ce02a6d6b1e..6bda2c96ed0d078985d77b993144828ec7de1b9c 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId11 and b/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId11 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId16 b/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId16
deleted file mode 100644
index 228b8be064ecf35c69bb788937ce7ff8ab50174e..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId16 and /dev/null differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 6a2c8311aad2bec86286b0f270caab2751d19e4b..4bd233e0eadb98e8fa5873e7b16630662e933ad2 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 2646eb7602accd2b174ae3a116377f828e0b1473..041f72627c390f7525ce054448a10d7d8c959086 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -19,6 +19,7 @@ public class SimulatorApplication extends javafx.application.Application {
   private static final int SQUARE_HEIGHT = 30;
   public static final int INITIAL_FIRE_COUNT = 3;
   public static final int INITIAL_FIREFIGHTER_COUNT = 6;
+  public static final int INITIAL_CLOUD_COUNT = 2;
 
   private Stage primaryStage;
   private Parent view;
@@ -44,7 +45,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_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT);
   }
 
   private void showScene() {
diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index 81b9df828351be80fe30e3a28bb32a842ed3e72d..d816b1f58ace5ef866ba646e2166c90feeda0e2b 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -109,9 +109,9 @@ public class Controller {
   }
 
   public void initialize(int squareWidth, int squareHeight, int columnCount,
-                         int rowCount, int initialFireCount, int initialFirefighterCount) {
+                         int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount) {
     grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
-    board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount);
+    board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount,initialCloudCount);
     board.initializeElements();
     repaintGrid();
   }
diff --git a/src/main/java/model/Builder/FireFirefighterBuilder.java b/src/main/java/model/Builder/FireFirefightersBuilder.java
similarity index 64%
rename from src/main/java/model/Builder/FireFirefighterBuilder.java
rename to src/main/java/model/Builder/FireFirefightersBuilder.java
index 5af512c580daf48dd3a43f94d3dd962127381e29..13acd7a2cba7314bf7aa6fa090a30e35080c3022 100644
--- a/src/main/java/model/Builder/FireFirefighterBuilder.java
+++ b/src/main/java/model/Builder/FireFirefightersBuilder.java
@@ -1,11 +1,12 @@
 package model.Builder;
 
-public class FireFirefighterBuilder {
-    public void Build(int fires, int firefighters) {
+public class FireFirefightersBuilder {
+    public void Build(int fires, int firefighters , int clouds) {
         ConcreteGameBuilder concreteGameBuilder;
         concreteGameBuilder =new ConcreteGameBuilder();
         concreteGameBuilder.setFire(fires)
                 .setFireFighter(firefighters)
+                .setCloud(clouds)
                 .build();
     }
 }
diff --git a/src/main/java/model/Builder/GameManage.java b/src/main/java/model/Builder/GameManage.java
index 2a8c2d8759b48eb74e604c441d473ab4fe3e7b86..3786c3ec6dbeca0da18eb791f415585d805d8486 100644
--- a/src/main/java/model/Builder/GameManage.java
+++ b/src/main/java/model/Builder/GameManage.java
@@ -1,6 +1,7 @@
 package model.Builder;
 
 import javafx.scene.paint.Color;
+import model.ExtinguishFire.Cloud;
 import model.ExtinguishFire.FireFighter;
 import model.Flammable.Fire;
 
@@ -32,7 +33,7 @@ public class GameManage {
             new FireFighter(Color.BLUE);
         }
         for(int i=0;i<clouds;i++) {
-            //new Cloud(Color.GRAY);
+            new Cloud(Color.DARKBLUE);
         }
         // TODO: 15/11/2023  la suite .... aussi l'initialisation va changer dans fire et firefighter
     }
diff --git a/src/main/java/model/ExtinguishFire/Cloud.java b/src/main/java/model/ExtinguishFire/Cloud.java
index 5fa1c31b671d246b8662185ede204bd7504d7407..a4fcfb406dd9776d69f0a9540755a249baf08ce5 100644
--- a/src/main/java/model/ExtinguishFire/Cloud.java
+++ b/src/main/java/model/ExtinguishFire/Cloud.java
@@ -1,4 +1,74 @@
 package model.ExtinguishFire;
 
-public class Cloud {
+import javafx.scene.paint.Color;
+import model.BoardElement;
+import model.GameBoard;
+import model.Visitor.FireFinder;
+import model.Visitor.Visitor;
+import util.Position;
+
+import java.util.*;
+
+import static model.GameBoard.elementPosition;
+import static model.GameBoard.randomPosition;
+
+public class Cloud implements ExtinguishFire{
+
+    Color color;
+
+    public Cloud(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) {
+        List<Position> firePositions = new ArrayList<>();
+        for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()) {
+            for (BoardElement element : entry.getValue()) {
+                if (element.accept(new FireFinder())) {
+                    firePositions.add(entry.getKey());
+                }
+            }
+        }
+        List<Position> neighbors = gameBoard.neighbors(position);
+        Random random = new Random();
+        int randomIndex = random.nextInt(neighbors.size());
+        Position newFirefighterPosition = neighbors.get(randomIndex);
+        if(newElementPosition.containsKey(newFirefighterPosition)){
+            newElementPosition.get(newFirefighterPosition).add(this);
+        }
+        else{
+            ArrayList<BoardElement> boardElements = new ArrayList<>();
+            boardElements.add(this);
+            newElementPosition.put(newFirefighterPosition,boardElements);
+        }
+        extinguishPosition.add(newFirefighterPosition);
+        List<Position> neighborFirePositions = gameBoard.neighbors(newFirefighterPosition).stream()
+                .filter(firePositions::contains).toList();
+        for(Position firePosition : neighborFirePositions) {
+            extinguishPosition.add(firePosition);
+        }
+    }
 }
diff --git a/src/main/java/model/ExtinguishFire/FireFighter.java b/src/main/java/model/ExtinguishFire/FireFighter.java
index 060a5de7a4397caf1b72ce6fb7af84db03dcf117..73e882fcd02475c97582e1ae6cffa1d7e8098679 100644
--- a/src/main/java/model/ExtinguishFire/FireFighter.java
+++ b/src/main/java/model/ExtinguishFire/FireFighter.java
@@ -37,7 +37,7 @@ public class FireFighter implements ExtinguishFire {
         boolean canInitialise;
         Position position = GameBoard.randomPosition();
         if(elementPosition.containsKey(position)) {
-            for (; ; ) {
+            for (;;) {
                 canInitialise = true;
                 for (BoardElement element : elementPosition.get(position)) {
                     if (element.accept(crossMountain)) {
diff --git a/src/main/java/model/Flammable/Fire.java b/src/main/java/model/Flammable/Fire.java
index a37e88732c89ec6a270597877b45723785d2234c..41190fc1af9fc6ae1ae108f36d14efbfdec2813a 100644
--- a/src/main/java/model/Flammable/Fire.java
+++ b/src/main/java/model/Flammable/Fire.java
@@ -95,11 +95,12 @@ public class Fire implements Flammable{
                     ArrayList<BoardElement> boardElements = new ArrayList<>();
                     boardElements.add(this);
                     newElementPosition.put(newPosition,boardElements);
-                    System.out.println(GameBoard.elementPosition.get(position).get(0).getColor());
+                    //System.out.println(GameBoard.elementPosition.get(position).get(0).getColor());
                 }
 
             }
-        }else{
+        }
+        else{
             if(newElementPosition.containsKey(position))
                 newElementPosition.get(position).add(this);
             else {
diff --git a/src/main/java/model/GameBoard.java b/src/main/java/model/GameBoard.java
index 5b4773cbdde757e725dbe13b2a7d4733c4f9c6d0..4795d8cfa054712ed8a7ecd6eea597a4422c69c1 100644
--- a/src/main/java/model/GameBoard.java
+++ b/src/main/java/model/GameBoard.java
@@ -1,6 +1,6 @@
 package model;
 
-import model.Builder.FireFirefighterBuilder;
+import model.Builder.FireFirefightersBuilder;
 import model.Builder.GameManage;
 import model.ExtinguishFire.ExtinguishFire;
 import model.Flammable.Flammable;
@@ -14,6 +14,7 @@ public class GameBoard implements Board{
     static  int rowCount;
     private int initialFireCount;
     private int initialFirefighterCount;
+    private int initialCloudCount;
     private int step = 0;
     static Random randomGenerator = new Random();
 
@@ -23,16 +24,17 @@ public class GameBoard implements Board{
 
     public static HashMap<Position, ArrayList<BoardElement>> elementPosition=new HashMap<>();
 
-    public GameBoard(int columnCount,int rowCount,int initialFireCount, int initialFirefighterCount) {
+    public GameBoard(int columnCount,int rowCount,int initialFireCount, int initialFirefighterCount,int initialCloudCount) {
         this.columnCount = columnCount;
         this.rowCount = rowCount;
         this.initialFireCount = initialFireCount;
         this.initialFirefighterCount = initialFirefighterCount;
+        this.initialCloudCount = initialCloudCount;
     }
 
     public void initializeElements(){
-        FireFirefighterBuilder fireFirefighterBuilder=new FireFirefighterBuilder();
-        fireFirefighterBuilder.Build(this.initialFireCount,this.initialFirefighterCount);
+        FireFirefightersBuilder fireFirefighterBuilder=new FireFirefightersBuilder();
+        fireFirefighterBuilder.Build(this.initialFireCount,this.initialFirefighterCount,this.initialCloudCount);
     }
 
     public static Position randomPosition() {
diff --git a/src/main/java/model/Visitor/CrossMountain.java b/src/main/java/model/Visitor/CrossMountain.java
index bc8097d1d97cc51209fee1c1b7ed6ddf8c707e48..79fdb61439896429e9c2a6a3f2046074ba76cbfa 100644
--- a/src/main/java/model/Visitor/CrossMountain.java
+++ b/src/main/java/model/Visitor/CrossMountain.java
@@ -1,5 +1,6 @@
 package model.Visitor;
 
+import model.ExtinguishFire.Cloud;
 import model.ExtinguishFire.FireFighter;
 import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
@@ -16,7 +17,8 @@ public class CrossMountain implements Visitor {
     public boolean visit(FireFighter fireFighter) {
         return false;
     }
-
+    @Override
+    public boolean visit(Cloud cloud) {return true;}
     @Override
     public boolean visit(MotorizedFireFighter motorizedFireFighter) {
         return false;
diff --git a/src/main/java/model/Visitor/CrossRoad.java b/src/main/java/model/Visitor/CrossRoad.java
index 4a0f710dbaee13ab9a6da545501df32b23e895c1..b886335897981e4e319ac3e012eb470aff106da0 100644
--- a/src/main/java/model/Visitor/CrossRoad.java
+++ b/src/main/java/model/Visitor/CrossRoad.java
@@ -1,5 +1,6 @@
 package model.Visitor;
 
+import model.ExtinguishFire.Cloud;
 import model.ExtinguishFire.FireFighter;
 import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
@@ -17,11 +18,16 @@ public class CrossRoad implements Visitor {
         return true;
     }
 
+    @Override
+    public boolean visit(Cloud cloud) {return true;}
+
     @Override
     public boolean visit(MotorizedFireFighter motorizedFireFighter) {
         return true;
     }
 
+
+
     @Override
     public boolean visit(Mountain mountain) {
         return false;
@@ -29,6 +35,6 @@ public class CrossRoad implements Visitor {
 
     @Override
     public boolean visit(Road road) {
-        return false;
+        return true;
     }
 }
diff --git a/src/main/java/model/Visitor/FireFinder.java b/src/main/java/model/Visitor/FireFinder.java
index 3718c615c60117d69188f90e6ebd628db2faefd8..dd8ed25a546046ad15ad60ad0000acd9c2ae4095 100644
--- a/src/main/java/model/Visitor/FireFinder.java
+++ b/src/main/java/model/Visitor/FireFinder.java
@@ -1,5 +1,6 @@
 package model.Visitor;
 
+import model.ExtinguishFire.Cloud;
 import model.ExtinguishFire.FireFighter;
 import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
@@ -17,6 +18,9 @@ public class FireFinder implements Visitor {
         return false;
     }
 
+    @Override
+    public boolean visit(Cloud cloud) {return false;}
+
     @Override
     public boolean visit(MotorizedFireFighter motorizedFireFighter) {
         return false;
diff --git a/src/main/java/model/Visitor/Visitor.java b/src/main/java/model/Visitor/Visitor.java
index 5a324d1942b57410f4d084e7d995efac6a300c95..53cb66b6497e59ad15c9413fd55534bb849e5a3c 100644
--- a/src/main/java/model/Visitor/Visitor.java
+++ b/src/main/java/model/Visitor/Visitor.java
@@ -1,5 +1,6 @@
 package model.Visitor;
 
+import model.ExtinguishFire.Cloud;
 import model.ExtinguishFire.FireFighter;
 import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
@@ -10,6 +11,7 @@ public interface Visitor {
 
     boolean visit(Fire fire);
     boolean visit(FireFighter fireFighter);
+    boolean visit(Cloud cloud);
     boolean visit(MotorizedFireFighter motorizedFireFighter);
     boolean visit(Mountain mountain);
     boolean visit(Road road);