package ch.epfl.maze.physical; import ch.epfl.maze.util.Direction; import ch.epfl.maze.util.Vector2D; import java.util.Arrays; import java.util.EnumSet; import java.util.Set; /** * Prey that is killed by a predator when they meet each other in the labyrinth. * * @author EPFL * @author Pacien TRAN-GIRARD */ abstract public class Prey extends ProbabilisticAnimal { /** * Constructs a prey with a specified position. * * @param position Position of the prey in the labyrinth */ public Prey(Vector2D position) { super(position); } /** * Retrieves the next direction of the animal, by selecting one choice among * the ones available from its position. *

* In this variation, the animal knows the world entirely. It can therefore * use the position of other animals in the daedalus to evade predators more * effectively. * * @param choices The choices left to the animal at its current position (see * {@link ch.epfl.maze.physical.World#getChoices(Vector2D) * World.getChoices(Vector2D)}) * @param daedalus The world in which the animal moves * @return The next direction of the animal, chosen in {@code choices} * @implNote Not abstract for compatibility purpose (in order not to break tests) */ public Direction move(Set choices, Daedalus daedalus) { return null; } /** * Retrieves the next direction of the animal, by selecting one choice among * the ones available from its position. *

* In this variation, the animal knows the world entirely. It can therefore * use the position of other animals in the daedalus to evade predators more * effectively. * * @param choices The choices left to the animal at its current position (see * {@link ch.epfl.maze.physical.World#getChoices(Vector2D) * World.getChoices(Vector2D)}) * @param daedalus The world in which the animal moves * @return The next direction of the animal, chosen in {@code choices} * @apiNote Not final for compatibility purpose (in order not to break tests) * @deprecated Use @code{Direction move(Set choices, Daedalus daedalus)} instead */ public Direction move(Direction[] choices, Daedalus daedalus) { return this.move(EnumSet.copyOf(Arrays.asList(choices)), daedalus); } }