diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java
index fdd1f57ab3da3c0eedfe29567e0f9c6d87442fe3..b902612a14c0f5327dfaac5836f0090ab6e80245 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 = 3;
   public static final int INITIAL_FIREFIGHTER_COUNT = 0;
   public static final int INITIAL_CLOUD_COUNT = 3;
+  public static final int INITIAL_MOTORIZED_COUNT = 3;
 
   private Stage primaryStage;
   private Parent view;
@@ -45,7 +46,7 @@ public class SimulatorApplication extends javafx.application.Application {
     view = loader.load();
     Controller controller = loader.getController();
     controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT,
-            INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT,INITIAL_CLOUD_COUNT);
+            INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT,INITIAL_CLOUD_COUNT,INITIAL_MOTORIZED_COUNT);
   }
 
   private void showScene() {
diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index 3d202dd1f795a5165fe3da033a06393081e5450e..aa67273ed6d0dfc9fe1beb1c515dcb55d045aa53 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -128,9 +128,9 @@ public class Controller {
   }
 
   public void initialize(int squareWidth, int squareHeight, int columnCount,
-                                int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloud) {
+                                int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloud,int initialMotorized) {
     grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
-    this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloud));
+    this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloud,initialMotorized));
     repaintGrid();
   }
 
diff --git a/src/main/java/model/BoardFireFighterBehavior.java b/src/main/java/model/BoardFireFighterBehavior.java
index 7e120d0a38f97272a4875ebd7d4114b960458006..60d83846ee592c58da536bc32acc680caa3cefd2 100644
--- a/src/main/java/model/BoardFireFighterBehavior.java
+++ b/src/main/java/model/BoardFireFighterBehavior.java
@@ -9,19 +9,23 @@ public class BoardFireFighterBehavior implements BoardBehavior{
     private final TargetStrategy targetStrategy = new TargetStrategy();
     private final Map<Position, List<Position>> neighbors;
     private List<Position> firefighterPositions;
+    private List<Position> motorizedFighters;
     private Set<Position> firePositions;
     private final ElementFactory<FireFighter> firefighterFactory;
     private final ElementFactory<Fire> fireFactory;
     private final ElementFactory<Cloud> cloudFactory;
+    private final ElementFactory<MotorizedFireFighter> motorizedFactory;
     private List<Position> cloudPositions;
     private int step;
 
-    public BoardFireFighterBehavior(Map<Position, List<Position>> neighbors, ElementFactory<Fire> fireFactory ,ElementFactory<FireFighter> firefighterFactory,ElementFactory<Cloud> cloudFactory) {
+    public BoardFireFighterBehavior(Map<Position, List<Position>> neighbors, ElementFactory<Fire> fireFactory ,ElementFactory<FireFighter> firefighterFactory,
+                                    ElementFactory<Cloud> cloudFactory,ElementFactory<MotorizedFireFighter> motorizedFactory) {
         this.step=0;
         this.neighbors = neighbors;
         this.firefighterFactory = firefighterFactory;
         this.fireFactory = fireFactory;
         this.cloudFactory=cloudFactory;
+        this.motorizedFactory=motorizedFactory;
     }
 
     public void initializeElements(int rowCount, int columnCount) {
@@ -81,6 +85,33 @@ public class BoardFireFighterBehavior implements BoardBehavior{
         firefighterPositions = newFirefighterPositions;
         return modifiedPositions;
     }
+    public List<Position> updateMotorized() {
+        List<Position> modifiedPositions = new ArrayList<>();
+        List<Position> newMotorizedPositions = new ArrayList<>();
+
+        // Déplace chaque pompier motorisé et éteint les feux à proximité
+        for (Position motorizedPosition : motorizedFighters) {
+            // Crée une instance temporaire de MotorizedFireFighter
+            MotorizedFireFighter motorizedFirefighter = new MotorizedFireFighter(motorizedPosition);
+
+            // Déplace le pompier
+            Position newPosition = motorizedFirefighter.move(firePositions, neighbors);
+
+            // Éteindre les feux à la nouvelle position
+            extinguishFire(firePositions, newPosition, modifiedPositions);
+
+            // Mettre à jour les positions
+            newMotorizedPositions.add(newPosition);
+            modifiedPositions.add(motorizedPosition); // Ancienne position
+            modifiedPositions.add(newPosition);       // Nouvelle position
+        }
+
+        // Met à jour la liste des positions des pompiers motorisés
+        motorizedFighters = newMotorizedPositions;
+
+        return modifiedPositions;
+    }
+
 
     private void extinguish(Position position) {
         firePositions.remove(position);
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index f015bf3a64cc25056431315ad07f85d7d46347b3..46c1e832531900390d46610fdbb4c5101d594a02 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -11,12 +11,12 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
 
   private final Random randomGenerator = new Random();
 
-  public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloud) {
+  public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloud,int initialMotorized) {
     Map<Position, List<Position>> neighbors = initializeNeighbors(rowCount, columnCount);
 
     this.properties = new BoardFirefighterProperties(rowCount, columnCount);
     this.behavior = new BoardFireFighterBehavior(neighbors,new FireFactory(randomGenerator,initialFireCount),new FirefighterFactory(randomGenerator,initialFirefighterCount),
-            new CloudFactory(randomGenerator,initialCloud));
+            new CloudFactory(randomGenerator,initialCloud),new MotorizedFactory(randomGenerator,initialMotorized));
 
     behavior.initializeElements( properties.rowCount(), properties.columnCount());
   }
diff --git a/src/main/java/model/MotorizedFireFighter.java b/src/main/java/model/MotorizedFireFighter.java
index 88df1289d42afa91d38e7bedf69ead5b1e93e0e9..7fe715559835557fcc61db62ea62d2d9a3e5ca02 100644
--- a/src/main/java/model/MotorizedFireFighter.java
+++ b/src/main/java/model/MotorizedFireFighter.java
@@ -13,18 +13,26 @@ public class MotorizedFireFighter extends FireFighter{
 
 
 
-    public Position move(List<Position> positions,Map<Position, List<Position>> neighbors, Set<Position> firePositions) {
-        List<Position> modifiedPositions = new ArrayList<>();
-        List<Position> newPositions = new ArrayList<>();
-        Position finalPosition=null;
-        for (Position firefighterPosition : positions) {
-            // Déplacement motorisé (deux cases maximum)
-            Position firstStep = targetStrategy.neighborClosestToTarget(firefighterPosition, firePositions, neighbors);
-            Position secondStep = targetStrategy.neighborClosestToTarget(firstStep, firePositions, neighbors);
-            finalPosition = secondStep != null ? secondStep : firstStep;
-
+    /**
+     * Déplace le pompier motorisé en deux étapes maximum vers un feu.
+     *
+     * @param firePositions Les positions des feux.
+     * @param neighbors Les positions voisines accessibles.
+     * @return La nouvelle position du pompier.
+     */
+    public Position move(Set<Position> firePositions, Map<Position, List<Position>> neighbors) {
+        // Première étape
+        Position firstStep = targetStrategy.neighborClosestToTarget(getPosition(), firePositions, neighbors);
+        if (firstStep == null) {
+            return getPosition(); // Pas de mouvement possible
         }
 
-        return finalPosition;
+        // Deuxième étape
+        Position secondStep = targetStrategy.neighborClosestToTarget(firstStep, firePositions, neighbors);
+        Position newPosition = secondStep != null ? secondStep : firstStep;
+
+        // Mise à jour de la position
+        setPosition(newPosition);
+        return newPosition;
     }
 }