From f312719bf9df140a22406a4e40c5221a86cd8073 Mon Sep 17 00:00:00 2001
From: Pacien TRAN-GIRARD
Date: Tue, 24 Nov 2015 21:56:22 +0100
Subject: Refactor Daedalus residence
---
src/ch/epfl/maze/physical/DaedalusAware.java | 54 ++++++++++++++++++++++
src/ch/epfl/maze/physical/Predator.java | 46 +-----------------
src/ch/epfl/maze/physical/Prey.java | 46 +-----------------
.../physical/stragegies/picker/BlindPicker.java | 4 +-
.../physical/stragegies/picker/ChoicePicker.java | 11 +++--
.../stragegies/reducer/BlindChoiceReducer.java | 4 +-
.../physical/stragegies/reducer/CaseReducer.java | 12 ++---
.../physical/stragegies/reducer/ChoiceReducer.java | 8 ++--
8 files changed, 76 insertions(+), 109 deletions(-)
create mode 100644 src/ch/epfl/maze/physical/DaedalusAware.java
diff --git a/src/ch/epfl/maze/physical/DaedalusAware.java b/src/ch/epfl/maze/physical/DaedalusAware.java
new file mode 100644
index 0000000..16f20ee
--- /dev/null
+++ b/src/ch/epfl/maze/physical/DaedalusAware.java
@@ -0,0 +1,54 @@
+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;
+
+/**
+ * @author Pacien TRAN-GIRARD
+ */
+public interface DaedalusAware {
+
+ /**
+ * 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 hunt or 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)
+ */
+ default 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 hunt or 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
+ */
+ default Direction move(Direction[] choices, Daedalus daedalus) {
+ return this.move(EnumSet.copyOf(Arrays.asList(choices)), daedalus);
+ }
+
+}
diff --git a/src/ch/epfl/maze/physical/Predator.java b/src/ch/epfl/maze/physical/Predator.java
index ad5900e..9cc7256 100644
--- a/src/ch/epfl/maze/physical/Predator.java
+++ b/src/ch/epfl/maze/physical/Predator.java
@@ -1,19 +1,14 @@
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;
-
/**
* Predator that kills a prey when they meet with each other in the labyrinth.
*
* @author EPFL
* @author Pacien TRAN-GIRARD
*/
-abstract public class Predator extends ProbabilisticAnimal {
+abstract public class Predator extends Animal implements DaedalusAware {
/**
* Constructs a predator with a specified position.
@@ -24,43 +19,4 @@ abstract public class Predator extends ProbabilisticAnimal {
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 hunt 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 hunt 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);
- }
-
}
diff --git a/src/ch/epfl/maze/physical/Prey.java b/src/ch/epfl/maze/physical/Prey.java
index ff760c5..0ad62ff 100644
--- a/src/ch/epfl/maze/physical/Prey.java
+++ b/src/ch/epfl/maze/physical/Prey.java
@@ -1,19 +1,14 @@
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 {
+abstract public class Prey extends Animal implements DaedalusAware {
/**
* Constructs a prey with a specified position.
@@ -24,43 +19,4 @@ abstract public class Prey extends ProbabilisticAnimal {
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);
- }
-
}
diff --git a/src/ch/epfl/maze/physical/stragegies/picker/BlindPicker.java b/src/ch/epfl/maze/physical/stragegies/picker/BlindPicker.java
index 6dcf229..02cb1ef 100644
--- a/src/ch/epfl/maze/physical/stragegies/picker/BlindPicker.java
+++ b/src/ch/epfl/maze/physical/stragegies/picker/BlindPicker.java
@@ -1,6 +1,6 @@
package ch.epfl.maze.physical.stragegies.picker;
-import ch.epfl.maze.physical.World;
+import ch.epfl.maze.physical.Daedalus;
import ch.epfl.maze.util.Direction;
import java.util.Set;
@@ -13,7 +13,7 @@ import java.util.Set;
public interface BlindPicker extends ChoicePicker {
@Override
- default Direction pick(Set choices, World world) {
+ default Direction pick(Set choices, Daedalus daedalus) {
return this.pick(choices);
}
diff --git a/src/ch/epfl/maze/physical/stragegies/picker/ChoicePicker.java b/src/ch/epfl/maze/physical/stragegies/picker/ChoicePicker.java
index 76fe3eb..756c446 100644
--- a/src/ch/epfl/maze/physical/stragegies/picker/ChoicePicker.java
+++ b/src/ch/epfl/maze/physical/stragegies/picker/ChoicePicker.java
@@ -1,5 +1,6 @@
package ch.epfl.maze.physical.stragegies.picker;
+import ch.epfl.maze.physical.Daedalus;
import ch.epfl.maze.physical.World;
import ch.epfl.maze.util.Direction;
import ch.epfl.maze.util.Vector2D;
@@ -33,12 +34,12 @@ public interface ChoicePicker {
* In this variation, the animal knows the world entirely. It can therefore
* use the position of other animals in the daedalus to move 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 world The world in which the animal moves
+ * @param choices The choices left to the animal at its current position (see
+ * {@link World#getChoices(Vector2D)
+ * World.getChoices(Vector2D)})
+ * @param daedalus The daedalus in which the animal moves
* @return The next direction of the animal, chosen in {@code choices}
*/
- Direction pick(Set choices, World world);
+ Direction pick(Set choices, Daedalus daedalus);
}
diff --git a/src/ch/epfl/maze/physical/stragegies/reducer/BlindChoiceReducer.java b/src/ch/epfl/maze/physical/stragegies/reducer/BlindChoiceReducer.java
index 169a8f6..2e8a198 100644
--- a/src/ch/epfl/maze/physical/stragegies/reducer/BlindChoiceReducer.java
+++ b/src/ch/epfl/maze/physical/stragegies/reducer/BlindChoiceReducer.java
@@ -1,6 +1,6 @@
package ch.epfl.maze.physical.stragegies.reducer;
-import ch.epfl.maze.physical.World;
+import ch.epfl.maze.physical.Daedalus;
import ch.epfl.maze.util.Direction;
import java.util.Set;
@@ -13,7 +13,7 @@ import java.util.Set;
public interface BlindChoiceReducer extends ChoiceReducer {
@Override
- default Set reduce(Set choices, World world) {
+ default Set reduce(Set choices, Daedalus daedalus) {
return this.reduce(choices);
}
diff --git a/src/ch/epfl/maze/physical/stragegies/reducer/CaseReducer.java b/src/ch/epfl/maze/physical/stragegies/reducer/CaseReducer.java
index 837bd4b..71de287 100644
--- a/src/ch/epfl/maze/physical/stragegies/reducer/CaseReducer.java
+++ b/src/ch/epfl/maze/physical/stragegies/reducer/CaseReducer.java
@@ -1,6 +1,6 @@
package ch.epfl.maze.physical.stragegies.reducer;
-import ch.epfl.maze.physical.World;
+import ch.epfl.maze.physical.Daedalus;
import ch.epfl.maze.util.Direction;
import java.util.Set;
@@ -16,17 +16,17 @@ public interface CaseReducer extends ChoiceReducer {
/**
* Checks if the given choice should be kept or excluded by the filter.
*
- * @param choice A Direction
- * @param world The World
+ * @param choice A Direction
+ * @param daedalus The Daedalus
* @return T(The filter should keep the given choice)
*/
- boolean keepChoice(Direction choice, World world);
+ boolean keepChoice(Direction choice, Daedalus daedalus);
@Override
- default Set reduce(Set choices, World world) {
+ default Set reduce(Set choices, Daedalus daedalus) {
return choices
.stream()
- .filter(choice -> this.keepChoice(choice, world))
+ .filter(choice -> this.keepChoice(choice, daedalus))
.collect(Collectors.toSet());
}
diff --git a/src/ch/epfl/maze/physical/stragegies/reducer/ChoiceReducer.java b/src/ch/epfl/maze/physical/stragegies/reducer/ChoiceReducer.java
index 3cb744d..c7e8833 100644
--- a/src/ch/epfl/maze/physical/stragegies/reducer/ChoiceReducer.java
+++ b/src/ch/epfl/maze/physical/stragegies/reducer/ChoiceReducer.java
@@ -1,8 +1,7 @@
package ch.epfl.maze.physical.stragegies.reducer;
-import ch.epfl.maze.physical.World;
+import ch.epfl.maze.physical.Daedalus;
import ch.epfl.maze.util.Direction;
-import ch.epfl.maze.util.Vector2D;
import java.util.Set;
@@ -26,9 +25,10 @@ public interface ChoiceReducer {
* In this variation, the animal knows the world entirely. It can therefore
* use the position of other animals in the world to move more effectively.
*
- * @param choices The choices left to the animal
+ * @param choices The choices left to the animal
+ * @param daedalus The daedalus in which the animal moves
* @return A subset of possible direction of the animal, chosen in {@code choices}
*/
- Set reduce(Set choices, World world);
+ Set reduce(Set choices, Daedalus daedalus);
}
--
cgit v1.2.3