Source of SimpleMazeGame.java


  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: }