From 093fd685341c334be63ec950e44aa3a1edc82915 Mon Sep 17 00:00:00 2001 From: Pacien TRAN-GIRARD Date: Thu, 26 Nov 2015 10:28:22 +0100 Subject: Refactor main programs --- src/ch/epfl/maze/util/SimulationGenerator.java | 128 +++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 src/ch/epfl/maze/util/SimulationGenerator.java (limited to 'src/ch/epfl/maze/util/SimulationGenerator.java') diff --git a/src/ch/epfl/maze/util/SimulationGenerator.java b/src/ch/epfl/maze/util/SimulationGenerator.java new file mode 100644 index 0000000..6d7bbcb --- /dev/null +++ b/src/ch/epfl/maze/util/SimulationGenerator.java @@ -0,0 +1,128 @@ +package ch.epfl.maze.util; + +import ch.epfl.maze.physical.Daedalus; +import ch.epfl.maze.physical.Maze; +import ch.epfl.maze.physical.pacman.*; +import ch.epfl.maze.physical.zoo.*; +import ch.epfl.maze.simulation.DaedalusSimulation; +import ch.epfl.maze.simulation.MazeSimulation; +import ch.epfl.maze.simulation.Simulation; + +/** + * Generates a set of pre-computed labyrinth structures + * + * @author EPFL + * @author Pacien TRAN-GIRARD + */ +public final class SimulationGenerator { + + /** + * Returns the simulation with the given name. + * + * @param name The name + * @return The Simulation + */ + public static Simulation getSimulation(String name) { + switch (name) { + case "maze": + return SimulationGenerator.getMazeSimulation(); + case "daedalus": + return SimulationGenerator.getDaedalusSimulation(); + case "multi-daedalus": + return SimulationGenerator.getMultiPreyDaedalusSimulation(); + default: + return null; + } + } + + /** + * Creates a {@code MazeSimulation} with every animal implementations. + * + * @return A {@code MazeSimulation} to display + */ + public static Simulation getMazeSimulation() { + int[][] labyrinth = LabyrinthGenerator.getMedium(); + Maze m = new Maze(labyrinth); + Simulation simulation = new MazeSimulation(m); + + // adds a Mouse + m.addAnimal(new Mouse(m.getStart())); + + // adds a Monkey + m.addAnimal(new Monkey(m.getStart())); + + // adds a Hamster + m.addAnimal(new Hamster(m.getStart())); + + // adds a Bear (if this bonus is coded) + m.addAnimal(new Bear(m.getStart())); + + // adds a Panda + m.addAnimal(new Panda(m.getStart())); + + return simulation; + } + + /** + * Creates a {@code DaedalusSimulation} suitable for statistics. + *

+ * Note that there should be only ONE animal of each kind in the + * corresponding {@code Daedalus}. + * + * @return A {@code DaedalusSimulation} suitable for statistics + */ + public static Simulation getDaedalusSimulation() { + int[][] labyrinth = LabyrinthGenerator.getPacMan(); + Daedalus d = new Daedalus(labyrinth); + Simulation simulation = new DaedalusSimulation(d); + + // adds Pac-Man + d.addPrey(new PacMan(new Vector2D(9, 15))); + + // adds Blinky + d.addPredator(new Blinky(new Vector2D(17, 1))); + + // adds Pinky + d.addPredator(new Pinky(new Vector2D(1, 1))); + + // adds Inky + d.addPredator(new Inky(new Vector2D(17, 17))); + + // adds Clyde + d.addPredator(new Clyde(new Vector2D(1, 17))); + + return simulation; + } + + /** + * Creates a {@code DaedalusSimulation} with every ghost implementation and + * 3 Pac-Mans. + * + * @return A {@code DaedalusSimulation} to display + */ + public static Simulation getMultiPreyDaedalusSimulation() { + int[][] labyrinth = LabyrinthGenerator.getPacMan(); + Daedalus d = new Daedalus(labyrinth); + Simulation simulation = new DaedalusSimulation(d); + + // adds Pac-Mans + d.addPrey(new PacMan(new Vector2D(9, 15))); + d.addPrey(new PacMan(new Vector2D(10, 15))); + d.addPrey(new PacMan(new Vector2D(8, 15))); + + // adds Blinky + d.addPredator(new Blinky(new Vector2D(17, 1))); + + // adds Pinky + d.addPredator(new Pinky(new Vector2D(1, 1))); + + // adds Inky + d.addPredator(new Inky(new Vector2D(17, 17))); + + // adds Clyde + d.addPredator(new Clyde(new Vector2D(1, 17))); + + return simulation; + } + +} -- cgit v1.2.3