From 1d51f1760b3a79d4a0ac10146342b07e755af9b6 Mon Sep 17 00:00:00 2001 From: a23022716 <celia.arezki.1@etu.univ-amu.fr> Date: Fri, 22 Nov 2024 08:47:12 +0100 Subject: [PATCH] Prevent firefighters from crossing a mountain. --- src/main/java/util/Strategy.java | 4 +++- src/main/java/util/TargetStrategy.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/util/Strategy.java b/src/main/java/util/Strategy.java index 61c8151..4ca44e7 100644 --- a/src/main/java/util/Strategy.java +++ b/src/main/java/util/Strategy.java @@ -1,9 +1,11 @@ package util; +import view.ViewElement; + import java.util.Collection; import java.util.List; import java.util.Map; public interface Strategy { - Position neighborClosestToTarget(Position position, Collection<Position> targets, Map<Position, List<Position>> neighbors); + Position neighborClosestToTarget(Position position, Collection<Position> targets, Map<Position, List<Position>> neighbors, ViewElement[][] grid); } diff --git a/src/main/java/util/TargetStrategy.java b/src/main/java/util/TargetStrategy.java index 78ccadc..7a2b051 100644 --- a/src/main/java/util/TargetStrategy.java +++ b/src/main/java/util/TargetStrategy.java @@ -1,6 +1,7 @@ package util; import util.Position; +import view.ViewElement; import java.util.*; @@ -13,7 +14,7 @@ public class TargetStrategy implements Strategy{ * @return the position next to the current position that is on the path to the closest target. */ public Position neighborClosestToTarget(Position position, Collection<Position> targets, - Map<Position, List<Position>> neighbors) { + Map<Position, List<Position>> neighbors, ViewElement[][] grid) { Set<Position> seen = new HashSet<Position>(); HashMap<Position, Position> firstMove = new HashMap<Position, Position>(); Queue<Position> toVisit = new LinkedList<Position>(neighbors.get(position)); @@ -21,6 +22,7 @@ public class TargetStrategy implements Strategy{ firstMove.put(initialMove, initialMove); while (!toVisit.isEmpty()) { Position current = toVisit.poll(); + if (grid[current.row()][current.column()] == ViewElement.MOUNTAIN) continue; if (targets.contains(current)) return firstMove.get(current); for (Position adjacent : neighbors.get(current)) { -- GitLab