public class SimpleMazeGame
1:
2: package maze;
3:
4: import java.awt.*;
5: import javax.swing.*;
6:
7: /*
8: * Build a Maze game.
9: *
10: * This implmentation does not use any design patterns.
11: * Compare the createMaze() method of this class to the ccorresponding method of the following
12: * classes which create the same Maze using different creational design patterns.
13: * - MazeGameAbstractFactory: using Abstract Factory design pattern
14: * - MazeGameBuilder: using Builder design pattern
15: *
16: * Run the program as follows:
17: * java maze.SimpleMazeGame Large
18: * -- create a large Maze game
19: * java maze.SimpleMazeGame
20: * -- create a small Maze game
21: */
22: public class SimpleMazeGame {
23:
24: /**
25: * Creates a small maze with 2 rooms.
26: */
27: public static Maze createMaze() {
28: Maze maze = new Maze();
29: Room room1 = new Room(1);
30: Room room2 = new Room(2);
31: Door door = new Door(room1, room2);
32:
33: room1.setSide(Direction.NORTH, new Wall());
34: room1.setSide(Direction.EAST, door);
35: room1.setSide(Direction.SOUTH, new Wall());
36: room1.setSide(Direction.WEST, new Wall());
37:
38: room2.setSide(Direction.NORTH, new Wall());
39: room2.setSide(Direction.EAST, new Wall());
40: room2.setSide(Direction.SOUTH, new Wall());
41: room2.setSide(Direction.WEST, door);
42:
43: maze.addRoom(room1);
44: maze.addRoom(room2);
45:
46: return maze;
47: }
48:
49: /**
50: * Creates a large maze with 9 rooms.
51: */
52: public static Maze createLargeMaze() {
53: Maze maze = new Maze();
54: Room room1 = new Room(1);
55: Room room2 = new Room(2);
56: Room room3 = new Room(3);
57: Room room4 = new Room(4);
58: Room room5 = new Room(5);
59: Room room6 = new Room(6);
60: Room room7 = new Room(7);
61: Room room8 = new Room(8);
62: Room room9 = new Room(9);
63: Door door1 = new Door(room1, room2);
64: Door door2 = new Door(room2, room3);
65: Door door3 = new Door(room4, room5);
66: Door door4 = new Door(room5, room6);
67: Door door5 = new Door(room5, room8);
68: Door door6 = new Door(room6, room9);
69: Door door7 = new Door(room7, room8);
70: Door door8 = new Door(room1, room4);
71:
72: door1.setOpen(true);
73: door2.setOpen(false);
74: door3.setOpen(true);
75: door4.setOpen(true);
76: door5.setOpen(false);
77: door6.setOpen(true);
78: door7.setOpen(true);
79: door8.setOpen(true);
80:
81: room1.setSide(Direction.NORTH, door8);
82: room1.setSide(Direction.EAST, new Wall());
83: room1.setSide(Direction.SOUTH, new Wall());
84: room1.setSide(Direction.WEST, door1);
85:
86: room2.setSide(Direction.NORTH, new Wall());
87: room2.setSide(Direction.EAST, door1);
88: room2.setSide(Direction.SOUTH, new Wall());
89: room2.setSide(Direction.WEST, door2);
90:
91: room3.setSide(Direction.NORTH, new Wall());
92: room3.setSide(Direction.EAST, door2);
93: room3.setSide(Direction.SOUTH, new Wall());
94: room3.setSide(Direction.WEST, new Wall());
95:
96: room4.setSide(Direction.NORTH, new Wall());
97: room4.setSide(Direction.EAST, new Wall());
98: room4.setSide(Direction.SOUTH, door8);
99: room4.setSide(Direction.WEST, door3);
100:
101: room5.setSide(Direction.NORTH, door5);
102: room5.setSide(Direction.EAST, door3);
103: room5.setSide(Direction.SOUTH, new Wall());
104: room5.setSide(Direction.WEST, door4);
105:
106: room6.setSide(Direction.NORTH, door6);
107: room6.setSide(Direction.EAST, door4);
108: room6.setSide(Direction.SOUTH, new Wall());
109: room6.setSide(Direction.WEST, new Wall());
110:
111: room7.setSide(Direction.NORTH, new Wall());
112: room7.setSide(Direction.EAST, new Wall());
113: room7.setSide(Direction.SOUTH, new Wall());
114: room7.setSide(Direction.WEST, door7);
115:
116: room8.setSide(Direction.NORTH, new Wall());
117: room8.setSide(Direction.EAST, door7);
118: room8.setSide(Direction.SOUTH, door5);
119: room8.setSide(Direction.WEST, new Wall());
120:
121: room9.setSide(Direction.NORTH, new Wall());
122: room9.setSide(Direction.EAST, new Wall());
123: room9.setSide(Direction.SOUTH, door6);
124: room9.setSide(Direction.WEST, new Wall());
125:
126: maze.addRoom(room1);
127: maze.addRoom(room2);
128: maze.addRoom(room3);
129: maze.addRoom(room4);
130: maze.addRoom(room5);
131: maze.addRoom(room6);
132: maze.addRoom(room7);
133: maze.addRoom(room8);
134: maze.addRoom(room9);
135:
136: return maze;
137: }
138:
139: public static void main(String[] args) {
140: Maze maze;
141: if (args.length > 0 &&
142: "Large".equals(args[0])) {
143: maze = createLargeMaze();
144: } else {
145: maze = createMaze();
146: }
147: maze.setCurrentRoom(1);
148: maze.showFrame("Maze");
149: }
150:
151:
152: }