diff --git a/.gradle/7.4/checksums/checksums.lock b/.gradle/7.4/checksums/checksums.lock
index df54c1e0932a6aad9b35fe2f5781753d92dd27c2..7945266a5ab6080a184744726c20279bc02aff12 100644
Binary files a/.gradle/7.4/checksums/checksums.lock and b/.gradle/7.4/checksums/checksums.lock differ
diff --git a/.gradle/7.4/checksums/md5-checksums.bin b/.gradle/7.4/checksums/md5-checksums.bin
index 38740cef473d59e77cc7580e7c7e168c289010c2..9bbe785680011a2f8b23e87fc2121a38b13e522d 100644
Binary files a/.gradle/7.4/checksums/md5-checksums.bin and b/.gradle/7.4/checksums/md5-checksums.bin differ
diff --git a/.gradle/7.4/checksums/sha1-checksums.bin b/.gradle/7.4/checksums/sha1-checksums.bin
index 37d18a5f1d3ac5802ec2e11e6e2ee389d38eabe7..fea70b434ac82a5ac09a3066ba32ffa10504603f 100644
Binary files a/.gradle/7.4/checksums/sha1-checksums.bin and b/.gradle/7.4/checksums/sha1-checksums.bin differ
diff --git a/.gradle/7.4/executionHistory/executionHistory.bin b/.gradle/7.4/executionHistory/executionHistory.bin
index 8044f8db540d8ca16951815ac998f6158a86ba9c..379c05b56bf4592bad402191032e6a449f6f8730 100644
Binary files a/.gradle/7.4/executionHistory/executionHistory.bin and b/.gradle/7.4/executionHistory/executionHistory.bin differ
diff --git a/.gradle/7.4/executionHistory/executionHistory.lock b/.gradle/7.4/executionHistory/executionHistory.lock
index e57456dc4f9a187338a1af68d935fbf5cffe29da..80e8955e82d390b14df82ea4edcc8a752d441d75 100644
Binary files a/.gradle/7.4/executionHistory/executionHistory.lock and b/.gradle/7.4/executionHistory/executionHistory.lock differ
diff --git a/.gradle/7.4/fileHashes/fileHashes.bin b/.gradle/7.4/fileHashes/fileHashes.bin
index ac4d206fd6144671088bac4e8af72f9d24c99d8f..142907fc41e849b439843292be0e751c757d5320 100644
Binary files a/.gradle/7.4/fileHashes/fileHashes.bin and b/.gradle/7.4/fileHashes/fileHashes.bin differ
diff --git a/.gradle/7.4/fileHashes/fileHashes.lock b/.gradle/7.4/fileHashes/fileHashes.lock
index f382ced7e8f10e14ccd723be3c74dae1c97aa72b..377c088269107b126a7bee13fb74d2242b021620 100644
Binary files a/.gradle/7.4/fileHashes/fileHashes.lock and b/.gradle/7.4/fileHashes/fileHashes.lock differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index f7492f18c6ecf67db5af3279f7c8498953313f0a..4ec51350aa97f62b3460115e0baef1fe9e4bf6f6 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 22247e075c97d900294472751d70aa6810330c43..326d448f40e8f55068815749a26d8cf43687b3be 100644
Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 659bf43190d1afbfe1907e2e5e2bd75ad761dfb3..fcb19bf381b237a36abc9a8ced69fdc6c5bcad7e 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="CompilerConfiguration">
-    <bytecodeTargetLevel target="16" />
+    <bytecodeTargetLevel target="18" />
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index ba1ec5c7e20c12eb5b893684698eab151c4a8803..611e7c8ad7b91e576987485e8678b0fdad4193ae 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
+  <component name="GradleMigrationSettings" migrationVersion="1" />
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 3db7abf849bb2eb6f6e84f40abd01c1aba9033b5..9cf8f20b616152fc0d31b04e72fa4895e7e92e02 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,7 +4,7 @@
   <component name="FrameworkDetectionExcludesConfiguration">
     <file type="web" url="file://$PROJECT_DIR$" />
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_16" default="true" project-jdk-name="corretto-16" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_18" default="true" project-jdk-name="corretto-16" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>
\ No newline at end of file
diff --git a/src/main/java/Grid.java b/src/main/java/Grid.java
index 23fb50d23d9ba0dd308def943a81d8fe898d40a9..0c522287853ee33182d1cc47f62c268bd1eb1b36 100644
--- a/src/main/java/Grid.java
+++ b/src/main/java/Grid.java
@@ -17,12 +17,12 @@ public class Grid extends Canvas{
         setFocusTraversable(true);
         setOnMousePressed(this::mousePressed);
         model = new Model(this);
-        model.initialisation(3,8);
+        model.initialisation(3,1,2,1);
     }
 
     public void restart(MouseEvent mouseEvent){
         model = new Model(this);
-        model.initialisation(3,6);
+        model.initialisation(3,6,0,2);
         getGraphicsContext2D().clearRect(0,0,width,height);
         repaint();
     }
@@ -51,6 +51,17 @@ public class Grid extends Canvas{
         getGraphicsContext2D().setFill(Color.BLUE);
         getGraphicsContext2D().fillRect(row*height/rowCount,col*width/colCount,height/rowCount,width/colCount);
     }
+    public void paintCC(int row ,int col){
+        getGraphicsContext2D().setFill(Color.GREEN);
+        getGraphicsContext2D().fillRect(row*height/rowCount,col*width/colCount,height/rowCount,width/colCount);
+
+    }
+
+    public void paintMF(int row ,int col){
+        getGraphicsContext2D().setFill(Color.BLACK);
+        getGraphicsContext2D().fillRect(row*height/rowCount,col*width/colCount,height/rowCount,width/colCount);
+
+    }
 
     public void paintFire(int row, int col) {
         getGraphicsContext2D().setFill(Color.RED);
diff --git a/src/main/java/Model.java b/src/main/java/Model.java
index f23d0d13c6a3e847962201dc7c72fd5dedc0a249..52d20ea9b762f37e32f3aefafae70ba3c222be84 100644
--- a/src/main/java/Model.java
+++ b/src/main/java/Model.java
@@ -1,12 +1,19 @@
 import java.util.*;
 
 
-public class Model {
+public class Model  {
     Grid grid;
     int colCount, rowCount;
+    MotoFighter motoFighter = new MotoFighter();
+    List<Position>linefite=new ArrayList<>();
+
     List<Position> firefighters = new ArrayList<>();
+    List<Position> clouds = new ArrayList<>();
     Set<Position> fires = new HashSet<>();
     List<Position> ffNewPositions;
+    List<Position> cNewPositions;
+
+
     int step = 0;
 
     public Model(Grid grid) {
@@ -16,11 +23,16 @@ public class Model {
     }
 
 
-    public void initialisation(int fireNumber, int fireFighterNumber){
+    public void initialisation(int fireNumber, int fireFighterNumber,int cloudNumber,int motoFighterNumber){
         for(int index=0; index<fireNumber;index++)
             fires.add(randomPosition());
         for(int index=0; index<fireFighterNumber;index++)
             firefighters.add(randomPosition());
+        for(int index=0; index<cloudNumber;index++)
+            clouds.add(randomPosition());
+        for(int index=0; index<motoFighterNumber;index++)
+            linefite.add(randomPosition());
+        motoFighter.motofighter.add(randomPosition().row());
     }
 
     private Position randomPosition() {
@@ -28,22 +40,47 @@ public class Model {
     }
 
 
+
     public void activation(){
         ffNewPositions = new ArrayList<>();
         for(Position ff : firefighters){
             Position newPosition = activateFirefighter(ff);
-            grid.paint(ff.row,ff.col);
-            grid.paintFF(newPosition.row, newPosition.col);
+            grid.paint(ff.row(),ff.col());
+            grid.paintFF(newPosition.row(), newPosition.col());
             ffNewPositions.add(newPosition);
         }
+
+        cNewPositions = new ArrayList<>();
+
+        for(Position cc : clouds){
+            Position newPosition = activeCloud(cc);
+            grid.paint(cc.row(),cc.col());
+            grid.paintCC(newPosition.row(), newPosition.col());
+            cNewPositions.add(newPosition);
+        }
+
+       /* for(Position mF : motofighter){
+            Position newPosition = motoFighter.activateFighter(mF);
+            grid.paint(mF.row,mF.col);
+            grid.paintMF(newPosition.row, newPosition.col);
+            mfNewPositions.add(newPosition);
+        }*/
+
         firefighters = ffNewPositions;
+
+        clouds = cNewPositions;
+
+        motoFighter.activation();
+
+
+
         if(step%2==0){
             List<Position> newFires = new ArrayList<>();
             for(Position fire : fires){
                 newFires.addAll(activateFire(fire));
             }
             for(Position newFire : newFires)
-                grid.paintFire(newFire.row, newFire.col);
+                grid.paintFire(newFire.row(), newFire.col());
 
             fires.addAll(newFires);}
         step++;
@@ -54,6 +91,26 @@ public class Model {
         return next(position);
     }
 
+    private Position activeCloud(Position position){
+        Position randomPosition=next(position).get((int) (Math.random()*next(position).size()));
+        List<Position> nextFires = next(randomPosition).stream().filter(fires::contains).toList();
+        extinguish(randomPosition);
+        for (Position fire : nextFires)
+            extinguish(fire);
+        return randomPosition;
+
+    }
+
+  /*  private Position activateMotofighter(Position position) {
+        Position randomPosition = tStepTowardFire(position);
+        //next(position).get((int) (Math.random()*next(position).size()));
+        List<Position> nextFires = next(randomPosition).stream().filter(fires::contains).toList();
+        extinguish(randomPosition);
+        for (Position fire : nextFires)
+            extinguish(fire);
+        return randomPosition;
+    }*/
+
 
 
     private Position activateFirefighter(Position position) {
@@ -68,17 +125,25 @@ public class Model {
 
         private void extinguish(Position position) {
         fires.remove(position);
-        grid.paint(position.row, position.col);
+        grid.paint(position.row(), position.col());
     }
 
     private List<Position> next(Position position){
         List<Position> list = new ArrayList<>();
-        if(position.row>0) list.add(new Position(position.row-1, position.col));
-        if(position.col>0) list.add(new Position(position.row, position.col-1));
-        if(position.row<rowCount-1) list.add(new Position(position.row+1, position.col));
-        if(position.col<colCount-1) list.add(new Position(position.row, position.col+1));
+        if(position.row()>0) list.add(new Position(position.row()-1, position.col()));
+        if(position.col()>0) list.add(new Position(position.row(), position.col()-1));
+        if(position.row()<rowCount-1) list.add(new Position(position.row()+1, position.col()));
+        if(position.col()<colCount-1) list.add(new Position(position.row(), position.col()+1));
         return list;
     }
+   /* private List<Position> nextTwo(Position position){
+        List<Position> list = new ArrayList<>();
+        if(position.row>0) list.add(new Position(position.row-2, position.col));
+        if(position.col>0) list.add(new Position(position.row, position.col-2));
+        if(position.row<rowCount-1) list.add(new Position(position.row+2, position.col));
+        if(position.col<colCount-1) list.add(new Position(position.row, position.col+2));
+        return list;
+    }*/
 
     private Position aStepTowardFire(Position position){
         Queue<Position> toVisit = new LinkedList<>();
@@ -101,5 +166,26 @@ public class Model {
         return position;
     }
 
-    public record Position(int row, int col){}
+  /*  private Position tStepTowardFire(Position position){
+        Queue<Position> toVisit = new LinkedList<>();
+        Set<Position> seen = new HashSet<>();
+        HashMap<Position,Position> firstMove = new HashMap<>();
+        toVisit.addAll(nextTwo(position));
+        for(Position initialMove : toVisit)
+            firstMove.put(initialMove,initialMove);
+        while(!toVisit.isEmpty()){
+            Position current = toVisit.poll();
+            if(fires.contains(current))
+                return firstMove.get(current);
+            for(Position adjacent : next(current)){
+                if(seen.contains(adjacent)) continue;
+                toVisit.add(adjacent);
+                seen.add(adjacent);
+                firstMove.put(adjacent, firstMove.get(current));
+            }
+        }
+        return position;
+    }*/
+
+
 }
\ No newline at end of file