From 004aad73753648fb6e886f8b07af8936151245b8 Mon Sep 17 00:00:00 2001
From: ousseyn01 <ousseyn.ndiaye9@gmail.com>
Date: Wed, 27 Nov 2024 11:41:14 +0100
Subject: [PATCH] Implementation of firefighter for moving to the best position
 without touching Mountain

---
 src/main/java/model/Firefighter.java | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/src/main/java/model/Firefighter.java b/src/main/java/model/Firefighter.java
index f087ba6..0411168 100644
--- a/src/main/java/model/Firefighter.java
+++ b/src/main/java/model/Firefighter.java
@@ -24,10 +24,31 @@ public class Firefighter {
         this.position = position;
     }
 
-    public Position moveToBestPosition(TargetStrategy targetStrategy, Set<Position> firePositions, Map<Position, List<Position>> neighbors) {
+    /*public Position moveToBestPosition(TargetStrategy targetStrategy, Set<Position> firePositions, Map<Position, List<Position>> neighbors) {
         return targetStrategy.neighborClosestToFire(position, firePositions, neighbors);
+    }*/
+    public Position moveToBestPosition(Set<Position> firePositions, Map<Position, List<Position>> neighbors, Set<Position> mountains) {
+        Position currentPosition = getPosition();
+        Position bestPosition = currentPosition;
+        int minDistance = Integer.MAX_VALUE;
+
+        for (Position neighbor : neighbors.get(currentPosition)) {
+            if (mountains.contains(neighbor)) continue;  // Ignore les montagnes
+
+            // Rechercher le feu le plus proche depuis le voisin
+            for (Position firePosition : firePositions) {
+                int distance = Math.abs(firePosition.row() - neighbor.row()) + Math.abs(firePosition.column() - neighbor.column());
+                if (distance < minDistance) {
+                    minDistance = distance;
+                    bestPosition = neighbor;
+                }
+            }
+        }
+
+        return bestPosition; // Retourne la meilleure position parmi les voisines
     }
 
+
     public void extinguish(Position position, Set<Position> firePositions) {
         firePositions.remove(position);
     }
-- 
GitLab