diff --git a/src/main/java/model/Firefighter.java b/src/main/java/model/Firefighter.java index f087ba6eee886d691cfdbed52936b818d995bcd4..04111689c1dea1a6ead9516253c851e9be1fe5d4 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); }