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