-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGame.java
More file actions
292 lines (237 loc) · 10.9 KB
/
Copy pathGame.java
File metadata and controls
292 lines (237 loc) · 10.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
public class Game{
public static void main(String[] args) {
World w = buildWorld();
w.runSimulation();
}
// helper class for adding doors
private static class DoorSlot {
char direction;
Door door;
DoorSlot(char direction, Door door) {
this.direction = direction;
this.door = door;
}
}
// helper method for adding doors to the room
private static DoorSlot door(char direction, Door door) {
return new DoorSlot(direction, door);
}
// Makes roomBuilder codes run in 1 line
private static Room makeRoom(RoomBuilder rb, int x, int y, Entity entity,char design, DoorSlot... doors) {
rb.resetBuilder();
rb.createTiles(9, 9);
rb.setPosition(new Position(x, y));
for (DoorSlot d : doors) {
rb.addDoor(d.direction, d.door);
}
if (entity != null) {
rb.addEntity(entity, new Position(4, 4));
}
if(design != ' ') rb.addDesign(design);
Room room = rb.buildRoom();
return room;
}
// Adds rooms to the world class
private static void addRooms(World w, Room... rooms) {
for (Room room : rooms) {
w.rooms.add(room);
}
}
public static World buildWorld(){
World w = new World();
RoomBuilder rb = new RoomBuilder();
int c = 9; // columm
int r = 9; // row
// Player
LivingBeing player = new LivingBeing();
player.name = "Player";
// Enemy(s)
LivingBeing enemy = new LivingBeing();
enemy.name = "Enemy";
// Keys and chest
Key key1 = new Key(1);
Key key2 = new Key(2);
Key key3 = new Key(3);
Key key4 = new Key(4);
Key key5 = new Key(5);
Chest chest = new Chest(key5, 3);
// Locked doors
Door doorB2B3 = new Door(4);
Door doorC8D8 = new Door(1);
Door doorG2G3 = new Door(2);
Door exit = new Door(5); // H6-H7 locked exit door
// Open doors
Door doorA3B3 = new Door();
Door doorA3A4 = new Door();
Door doorA4A5 = new Door();
Door doorA5A6 = new Door();
Door doorA6B6 = new Door();
Door doorA6A7 = new Door();
Door doorA7A8 = new Door();
Door doorA8B8 = new Door();
Door doorB8C8 = new Door();
Door doorC1D1 = new Door();
Door doorC1C2 = new Door();
Door doorC2C3 = new Door();
Door doorC3D4 = new Door();
Door doorC3C4 = new Door();
Door doorC3D3 = new Door();
Door doorC4D4 = new Door();
Door doorC4C5 = new Door();
Door doorC5C6 = new Door();
Door doorC6D6 = new Door();
Door doorD1E1 = new Door();
Door doorD3E3 = new Door();
Door doorD4D5 = new Door();
Door doorD5D6 = new Door();
Door doorD6E6 = new Door();
Door doorD8E8 = new Door();
Door doorE3F3 = new Door();
Door doorE6E7 = new Door();
Door doorE7E8 = new Door();
Door doorE8F8 = new Door();
Door doorF1G1 = new Door();
Door doorF1F2 = new Door();
Door doorF2F3 = new Door();
Door doorF3G3 = new Door();
Door doorF3F4 = new Door();
Door doorF4F5 = new Door();
Door doorF5F6 = new Door();
Door doorF6G6 = new Door();
Door doorF8G8 = new Door();
Door doorG1H1 = new Door();
Door doorG3H3 = new Door();
Door doorG6H6 = new Door();
Door doorG8H8 = new Door();
Door doorH1H2 = new Door();
Door doorH2H3 = new Door();
Door doorH3H4 = new Door();
Door doorH4H5 = new Door();
Door doorH5H6 = new Door();
Door doorH7H8 = new Door();
// Rooms
// Exit
Room roomExit = makeRoom(rb, 0, 8, null,'T', door('d', exit));
roomExit.name = "WIN";
// H row
Room roomH1 = makeRoom(rb, 0, 0, null,'T', door('r', doorH1H2), door('d', doorG1H1));
Room roomH2 = makeRoom(rb, 0, 1, null,'T', door('l', doorH1H2), door('r', doorH2H3));
Room roomH3 = makeRoom(rb, 0, 2, null,'T', door('l', doorH2H3), door('r', doorH3H4), door('d', doorG3H3));
Room roomH4 = makeRoom(rb, 0, 3, null,'T', door('l', doorH3H4), door('r', doorH4H5));
Room roomH5 = makeRoom(rb, 0, 4, null,'T', door('l', doorH4H5), door('r', doorH5H6));
Room roomH6 = makeRoom(rb, 0, 5, chest,' ', door('l', doorH5H6), door('u', exit), door('d', doorG6H6));
Room roomH7 = makeRoom(rb, 0, 6, enemy,'T', door('r', doorH7H8));
Room roomH8 = makeRoom(rb, 0, 7, null,'T', door('l', doorH7H8), door('d', doorG8H8));
// G row
Room roomG1 = makeRoom(rb, 1, 0, null,' ', door('u', doorG1H1), door('d', doorF1G1));
Room roomG2 = makeRoom(rb, 1, 1, enemy,'C', door('r', doorG2G3));
Room roomG3 = makeRoom(rb, 1, 2, null,'J', door('l', doorG2G3), door('u', doorG3H3), door('d', doorF3G3));
Room roomG6 = makeRoom(rb, 1, 5, key3,' ', door('u', doorG6H6), door('d', doorF6G6));
Room roomG8 = makeRoom(rb, 1, 7, null,' ', door('u', doorG8H8), door('d', doorF8G8));
// F row
Room roomF1 = makeRoom(rb, 2, 0, null,'L', door('u', doorF1G1), door('r', doorF1F2));
Room roomF2 = makeRoom(rb, 2, 1, null,'T', door('l', doorF1F2), door('r', doorF2F3));
Room roomF3 = makeRoom(rb, 2, 2, null,' ', door('l', doorF2F3), door('r', doorF3F4), door('u', doorF3G3), door('d', doorE3F3));
Room roomF4 = makeRoom(rb, 2, 3, null,' ', door('l', doorF3F4), door('r', doorF4F5));
Room roomF5 = makeRoom(rb, 2, 4, null,' ', door('l', doorF4F5), door('r', doorF5F6));
Room roomF6 = makeRoom(rb, 2, 5, null,'J', door('l', doorF5F6), door('u', doorF6G6));
Room roomF8 = makeRoom(rb, 2, 7, null,' ', door('u', doorF8G8), door('d', doorE8F8));
// E row
Room roomE1 = makeRoom(rb, 3, 0, enemy,'T', door('d', doorD1E1));
Room roomE3 = makeRoom(rb, 3, 2, null,' ', door('u', doorE3F3), door('d', doorD3E3));
Room roomE6 = makeRoom(rb, 3, 5, null,'T', door('r', doorE6E7), door('d', doorD6E6));
Room roomE7 = makeRoom(rb, 3, 6, null,' ', door('l', doorE6E7), door('r', doorE7E8));
Room roomE8 = makeRoom(rb, 3, 7, null,' ', door('l', doorE7E8), door('u', doorE8F8), door('d', doorD8E8));
// D row
Room roomD1 = makeRoom(rb, 4, 0, null,' ', door('u', doorD1E1), door('d', doorC1D1));
Room roomD3 = makeRoom(rb, 4, 2, null,' ', door('u', doorD3E3), door('d', doorC3D3));
Room roomD4 = makeRoom(rb, 4, 3, enemy,'T', door('r', doorD4D5), door('d', doorC4D4));
Room roomD5 = makeRoom(rb, 4, 4, null,'T', door('l', doorD4D5), door('r', doorD5D6));
Room roomD6 = makeRoom(rb, 4, 5, null,'J', door('l', doorD5D6), door('d', doorC6D6), door('u', doorD6E6));
Room roomD8 = makeRoom(rb, 4, 7, null,' ', door('u', doorD8E8), door('d', doorC8D8));
// C row
Room roomC1 = makeRoom(rb, 5, 0, null,'L', door('u', doorC1D1), door('r', doorC1C2));
Room roomC2 = makeRoom(rb, 5, 1, null,'T', door('l', doorC1C2), door('r', doorC2C3));
Room roomC3 = makeRoom(rb, 5, 2, null,' ', door('l', doorC2C3), door('r', doorC3C4), door('u', doorC3D3));
Room roomC4 = makeRoom(rb, 5, 3, null,' ', door('l', doorC3C4), door('r', doorC4C5), door('u', doorC4D4));
Room roomC5 = makeRoom(rb, 5, 4, key2,' ', door('l', doorC4C5), door('r', doorC5C6));
Room roomC6 = makeRoom(rb, 5, 5, null,'J', door('l', doorC5C6), door('u', doorC6D6));
Room roomC8 = makeRoom(rb, 5, 7, null,' ', door('u', doorC8D8), door('d', doorB8C8));
// B row
Room roomB2 = makeRoom(rb, 6, 1, null,'C', door('r', doorB2B3));
Room roomB3 = makeRoom(rb, 6, 2, null,'J', door('l', doorB2B3), door('d', doorA3B3));
Room roomB6 = makeRoom(rb, 6, 5, enemy,'T', door('d', doorA6B6));
Room roomB8 = makeRoom(rb, 6, 7, key1,' ', door('u', doorB8C8), door('d', doorA8B8));
// A row
Room roomA3 = makeRoom(rb, 7, 2, key4,'L', door('u', doorA3B3), door('r', doorA3A4));
Room roomA4 = makeRoom(rb, 7, 3, null,'T', door('l', doorA3A4), door('r', doorA4A5));
Room roomA5 = makeRoom(rb, 7, 4, null,' ', door('l', doorA4A5), door('r', doorA5A6));
Room roomA6 = makeRoom(rb, 7, 5, player,' ', door('l', doorA5A6), door('r', doorA6A7), door('u', doorA6B6));
Room roomA7 = makeRoom(rb, 7, 6, null,'T', door('l', doorA6A7), door('r', doorA7A8));
Room roomA8 = makeRoom(rb, 7, 7, null,'J', door('l', doorA7A8), door('u', doorA8B8));
// Door connections
doorA3B3.connect(roomA3, roomB3);
doorA3A4.connect(roomA3, roomA4);
doorA4A5.connect(roomA4, roomA5);
doorA5A6.connect(roomA5, roomA6);
doorA6B6.connect(roomA6, roomB6);
doorA6A7.connect(roomA6, roomA7);
doorA7A8.connect(roomA7, roomA8);
doorA8B8.connect(roomA8, roomB8);
doorB2B3.connect(roomB2, roomB3);
doorB8C8.connect(roomB8, roomC8);
doorC1D1.connect(roomC1, roomD1);
doorC1C2.connect(roomC1, roomC2);
doorC2C3.connect(roomC2, roomC3);
doorC3D3.connect(roomC3, roomD3);
doorC3C4.connect(roomC3, roomC4);
doorC4D4.connect(roomC4, roomD4);
doorC4C5.connect(roomC4, roomC5);
doorC5C6.connect(roomC5, roomC6);
doorC6D6.connect(roomC6, roomD6);
doorC8D8.connect(roomC8, roomD8);
doorD1E1.connect(roomD1, roomE1);
doorD3E3.connect(roomD3, roomE3);
doorD4D5.connect(roomD4, roomD5);
doorD5D6.connect(roomD5, roomD6);
doorD6E6.connect(roomD6, roomE6);
doorD8E8.connect(roomD8, roomE8);
doorE3F3.connect(roomE3, roomF3);
doorE6E7.connect(roomE6, roomE7);
doorE7E8.connect(roomE7, roomE8);
doorE8F8.connect(roomE8, roomF8);
doorF1G1.connect(roomF1, roomG1);
doorF1F2.connect(roomF1, roomF2);
doorF2F3.connect(roomF2, roomF3);
doorF3G3.connect(roomF3, roomG3);
doorF3F4.connect(roomF3, roomF4);
doorF4F5.connect(roomF4, roomF5);
doorF5F6.connect(roomF5, roomF6);
doorF6G6.connect(roomF6, roomG6);
doorF8G8.connect(roomF8, roomG8);
doorG1H1.connect(roomG1, roomH1);
doorG2G3.connect(roomG2, roomG3);
doorG6H6.connect(roomG6, roomH6);
doorG8H8.connect(roomG8, roomH8);
doorG3H3.connect(roomH3, roomG3);
doorH1H2.connect(roomH1, roomH2);
doorH2H3.connect(roomH2, roomH3);
doorH3H4.connect(roomH3, roomH4);
doorH4H5.connect(roomH4, roomH5);
doorH5H6.connect(roomH5, roomH6);
doorH7H8.connect(roomH7, roomH8);
exit.connect(roomH6, roomExit);
addRooms(w,
roomExit,
roomH1, roomH2, roomH3, roomH4, roomH5, roomH6, roomH7, roomH8,
roomG1, roomG2, roomG3, roomG6, roomG8,
roomF1, roomF2, roomF3, roomF4, roomF5, roomF6, roomF8,
roomE1, roomE3, roomE6, roomE7, roomE8,
roomD1, roomD3, roomD4, roomD5, roomD6, roomD8,
roomC1, roomC2, roomC3, roomC4, roomC5, roomC6, roomC8,
roomB2, roomB3, roomB6, roomB8,
roomA3, roomA4, roomA5, roomA6, roomA7, roomA8
);
return w;
}
}