summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ch/epfl/maze/main/Console.java81
-rw-r--r--src/ch/epfl/maze/main/Program.java83
-rw-r--r--src/ch/epfl/maze/util/SimulationGenerator.java128
3 files changed, 139 insertions, 153 deletions
diff --git a/src/ch/epfl/maze/main/Console.java b/src/ch/epfl/maze/main/Console.java
index 0c273e1..ebe1e3e 100644
--- a/src/ch/epfl/maze/main/Console.java
+++ b/src/ch/epfl/maze/main/Console.java
@@ -1,18 +1,8 @@
1package ch.epfl.maze.main; 1package ch.epfl.maze.main;
2 2
3import ch.epfl.maze.physical.Daedalus;
4import ch.epfl.maze.physical.Maze;
5import ch.epfl.maze.physical.pacman.*;
6import ch.epfl.maze.physical.zoo.Hamster;
7import ch.epfl.maze.physical.zoo.Monkey;
8import ch.epfl.maze.physical.zoo.Mouse;
9import ch.epfl.maze.physical.zoo.Panda;
10import ch.epfl.maze.simulation.DaedalusSimulation;
11import ch.epfl.maze.simulation.MazeSimulation;
12import ch.epfl.maze.simulation.Simulation; 3import ch.epfl.maze.simulation.Simulation;
13import ch.epfl.maze.util.LabyrinthGenerator; 4import ch.epfl.maze.util.SimulationGenerator;
14import ch.epfl.maze.util.Statistics; 5import ch.epfl.maze.util.Statistics;
15import ch.epfl.maze.util.Vector2D;
16 6
17import java.util.Collections; 7import java.util.Collections;
18import java.util.List; 8import java.util.List;
@@ -30,12 +20,11 @@ public class Console {
30 * Number of simulations launched. 20 * Number of simulations launched.
31 */ 21 */
32 public static final int NUMBER_OF_SIMULATIONS = 1000; 22 public static final int NUMBER_OF_SIMULATIONS = 1000;
23 public static final String DEFAULT_SIM = "maze";
33 24
34 public static void main(String[] args) { 25 public static void main(String[] args) {
35 Simulation simulation; 26 String simName = args.length > 0 ? args[0] : DEFAULT_SIM;
36 27 Simulation simulation = SimulationGenerator.getSimulation(simName);
37 simulation = getMazeSimulation();
38 //simulation = getDaedalusSimulation();
39 28
40 System.out.print("Launching " + NUMBER_OF_SIMULATIONS + " simulations..."); 29 System.out.print("Launching " + NUMBER_OF_SIMULATIONS + " simulations...");
41 Map<String, List<Integer>> results = 30 Map<String, List<Integer>> results =
@@ -46,68 +35,6 @@ public class Console {
46 } 35 }
47 36
48 /** 37 /**
49 * Creates a {@code MazeSimulation} suitable for statistics.
50 * <p>
51 * Note that there should be only <b>ONE</b> animal of each kind in the
52 * corresponding {@code Maze}.
53 *
54 * @return A {@code MazeSimulation} suitable for statistics
55 */
56 public static Simulation getMazeSimulation() {
57 int[][] labyrinth = LabyrinthGenerator.getMedium();
58 Maze m = new Maze(labyrinth);
59 Simulation simulation = new MazeSimulation(m);
60
61 // adds a Mouse
62 m.addAnimal(new Mouse(m.getStart()));
63
64 // adds a Monkey
65 m.addAnimal(new Monkey(m.getStart()));
66
67 // adds a Hamster
68 m.addAnimal(new Hamster(m.getStart()));
69
70 // adds a Bear (if this bonus is coded)
71 // m.addAnimal(new Bear(m.getStart()));
72
73 // adds a Panda
74 m.addAnimal(new Panda(m.getStart()));
75
76 return simulation;
77 }
78
79 /**
80 * Creates a {@code DaedalusSimulation} suitable for statistics.
81 * <p>
82 * Note that there should be only <b>ONE</b> animal of each kind in the
83 * corresponding {@code Daedalus}.
84 *
85 * @return A {@code DaedalusSimulation} suitable for statistics
86 */
87 public static Simulation getDaedalusSimulation() {
88 int[][] labyrinth = LabyrinthGenerator.getPacMan();
89 Daedalus d = new Daedalus(labyrinth);
90 Simulation simulation = new DaedalusSimulation(d);
91
92 // adds Pac-Man
93 d.addPrey(new PacMan(new Vector2D(9, 15)));
94
95 // adds Blinky
96 d.addPredator(new Blinky(new Vector2D(17, 1)));
97
98 // adds Pinky
99 d.addPredator(new Pinky(new Vector2D(1, 1)));
100
101 // adds Inky
102 d.addPredator(new Inky(new Vector2D(17, 17)));
103
104 // adds Clyde
105 d.addPredator(new Clyde(new Vector2D(1, 17)));
106
107 return simulation;
108 }
109
110 /**
111 * Pretty-prints the statistics computed in the parameters. 38 * Pretty-prints the statistics computed in the parameters.
112 * 39 *
113 * @param results Statistics of arrival times for every animals/preys 40 * @param results Statistics of arrival times for every animals/preys
diff --git a/src/ch/epfl/maze/main/Program.java b/src/ch/epfl/maze/main/Program.java
index 347eace..4692d2a 100644
--- a/src/ch/epfl/maze/main/Program.java
+++ b/src/ch/epfl/maze/main/Program.java
@@ -1,18 +1,8 @@
1package ch.epfl.maze.main; 1package ch.epfl.maze.main;
2 2
3import ch.epfl.maze.graphics.Display; 3import ch.epfl.maze.graphics.Display;
4import ch.epfl.maze.physical.Daedalus;
5import ch.epfl.maze.physical.Maze;
6import ch.epfl.maze.physical.pacman.*;
7import ch.epfl.maze.physical.zoo.Hamster;
8import ch.epfl.maze.physical.zoo.Monkey;
9import ch.epfl.maze.physical.zoo.Mouse;
10import ch.epfl.maze.physical.zoo.Panda;
11import ch.epfl.maze.simulation.DaedalusSimulation;
12import ch.epfl.maze.simulation.MazeSimulation;
13import ch.epfl.maze.simulation.Simulation; 4import ch.epfl.maze.simulation.Simulation;
14import ch.epfl.maze.util.LabyrinthGenerator; 5import ch.epfl.maze.util.SimulationGenerator;
15import ch.epfl.maze.util.Vector2D;
16 6
17/** 7/**
18 * Mini-project main program that will run the simulations on a {@code Display}. 8 * Mini-project main program that will run the simulations on a {@code Display}.
@@ -21,79 +11,20 @@ import ch.epfl.maze.util.Vector2D;
21 */ 11 */
22public class Program { 12public class Program {
23 13
14 public static final String DEFAULT_SIM = "maze";
15
24 /** 16 /**
25 * Runs one of the two available simulations 17 * Runs one of the two available simulations
26 * 18 *
27 * @see #getMazeSimulation() 19 * @see ch.epfl.maze.util.SimulationGenerator#getMazeSimulation()
28 * @see #getDaedalusSimulation() 20 * @see ch.epfl.maze.util.SimulationGenerator#getMultiPreyDaedalusSimulation()
29 */ 21 */
30 public static void main(String[] args) { 22 public static void main(String[] args) {
31 Simulation simulation; 23 String simName = args.length > 0 ? args[0] : DEFAULT_SIM;
32 24 Simulation simulation = SimulationGenerator.getSimulation(simName);
33 simulation = getMazeSimulation();
34 //simulation = getDaedalusSimulation();
35 25
36 Display display = new Display(simulation); 26 Display display = new Display(simulation);
37 display.run(); 27 display.run();
38 } 28 }
39 29
40 /**
41 * Creates a {@code MazeSimulation} with every animal implementations.
42 *
43 * @return A {@code MazeSimulation} to display
44 */
45 public static Simulation getMazeSimulation() {
46 int[][] labyrinth = LabyrinthGenerator.getMedium();
47 Maze m = new Maze(labyrinth);
48 Simulation simulation = new MazeSimulation(m);
49
50 // adds a Mouse
51 m.addAnimal(new Mouse(m.getStart()));
52
53 // adds a Monkey
54 m.addAnimal(new Monkey(m.getStart()));
55
56 // adds a Hamster
57 m.addAnimal(new Hamster(m.getStart()));
58
59 // adds a Bear (if this bonus is coded)
60 //m.addAnimal(new Bear(m.getStart()));
61
62 // adds a Panda
63 m.addAnimal(new Panda(m.getStart()));
64
65 return simulation;
66 }
67
68 /**
69 * Creates a {@code DaedalusSimulation} with every ghost implementation and
70 * 3 Pac-Mans.
71 *
72 * @return A {@code DaedalusSimulation} to display
73 */
74 public static Simulation getDaedalusSimulation() {
75 int[][] labyrinth = LabyrinthGenerator.getPacMan();
76 Daedalus d = new Daedalus(labyrinth);
77 Simulation simulation = new DaedalusSimulation(d);
78
79 // adds Pac-Mans
80 d.addPrey(new PacMan(new Vector2D(9, 15)));
81 d.addPrey(new PacMan(new Vector2D(10, 15)));
82 d.addPrey(new PacMan(new Vector2D(8, 15)));
83
84 // adds Blinky
85 d.addPredator(new Blinky(new Vector2D(17, 1)));
86
87 // adds Pinky
88 d.addPredator(new Pinky(new Vector2D(1, 1)));
89
90 // adds Inky
91 d.addPredator(new Inky(new Vector2D(17, 17)));
92
93 // adds Clyde
94 d.addPredator(new Clyde(new Vector2D(1, 17)));
95
96 return simulation;
97 }
98
99} 30}
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 @@
1package ch.epfl.maze.util;