diff --git a/src/main/java/util/Strategy.java b/src/main/java/util/Strategy.java index 61c8151f6a2f58f4f90803af0498006c6bf7733d..4ca44e7aa30160c942c83f6abe8a44e1b44c509e 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 78ccadc73aa1e14f05a3be62b0b4cd1ed8627080..7a2b0519452f37629da82619457c4c1739596eba 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)) {