]> Shamusworld >> Repos - warehouse-man-deluxe/blob - src/boards.cpp
Moved level storage to global location.
[warehouse-man-deluxe] / src / boards.cpp
1 //
2 // boards.cpp: Actual playable (we hope!) game boards
3 //
4 // by James Hammons
5 // © 2014 Underground Software
6 //
7 // JLH = James Hammons <jlhamm@acm.org>
8 //
9 // Who  When        What
10 // ---  ----------  ------------------------------------------------------------
11 // JLH  03/03/2014  Created this file
12 //
13
14 #include "boards.h"
15
16
17 // Level storage...
18 std::vector<Level> levelStorage;
19
20
21 //
22 // We use anonymous structs to create these, to keep things simple. :-)
23 //
24 // Legend:
25 //   @ = Wall
26 //     = Space
27 //   X = Box
28 //   . = Spot to move box to
29 //   + = Spot to move box to, that already has a box on it
30 //   o = Player initial position
31 //   * = Player initial position, that has a spot under it
32 //   - = Do not draw anything here
33 //
34
35 static const struct {
36         unsigned int width, height;
37         unsigned char state[5 * 5 + 40 + 1]; } board001 = { 5, 5,
38 //      const char * state; } board001 = { 5, 5,
39         "@@@@@"
40         "@o  @"
41         "@ X @"
42         "@ . @"
43         "@@@@@"
44         "Neophyte"
45 };
46
47
48 static const struct {
49         unsigned int width, height;
50         unsigned char state[7 * 7 + 40 + 1]; } board002 = { 7, 7,
51         "@@@@@@@"
52         "@     @"
53         "@ X.X @"
54         "@ .@. @"
55         "@ X.X @"
56         "@o    @"
57         "@@@@@@@"
58         "A Little Bit Harder..."
59 };
60
61
62 static const struct {
63         unsigned int width, height;
64         unsigned char state[7 * 5 + 40 + 1]; } board003 = { 7, 5,
65         "@@@@@@@"
66         "@. X .@"
67         "@ XoX @"
68         "@. X .@"
69         "@@@@@@@"
70         "Boxed In"
71 };
72
73
74 static const struct {
75         unsigned int width, height;
76         unsigned char state[8 * 5 + 40 + 1]; } board004 = { 8, 5,
77         "@@@@@@@@"
78         "@  ..X @"
79         "@ Xo X @"
80         "@ X..  @"
81         "@@@@@@@@"
82         "Edging Out"
83 };
84
85
86 static const struct {
87         unsigned int width, height;
88         unsigned char state[8 * 7 + 40 + 1]; } board005 = { 8, 7,
89         "-@@@@@@@"
90         "-@     @"
91         "@@ .X. @"
92         "@o X X @"
93         "@  .X. @"
94         "@@     @"
95         "-@@@@@@@"
96         "Rotation"
97 };
98
99
100 static const struct {
101         unsigned int width, height;
102         unsigned char state[8 * 8 + 40 + 1]; } board006 = { 8, 8,
103         "-@@@@@--"
104         "@@   @@@"
105         "@  @   @"
106         "@ @  @ @"
107         "@ X X@ @"
108         "@.@    @"
109         "@. o@@@@"
110         "@@@@@---"
111         "Headless Chicken"
112 };
113
114
115 static const struct {
116         unsigned int width, height;
117         unsigned char state[8 * 6 + 40 + 1]; } board007 = { 8, 6,
118         "@@@@@@@@"
119         "@ X. X.@"
120         "@o.X X.@"
121         "@ X. X.@"
122         "@ .X X.@"
123         "@@@@@@@@"
124         "Two Lines"
125 };
126
127
128 static const struct {
129         unsigned int width, height;
130         unsigned char state[10 * 8 + 40 + 1]; } board008 = { 10, 8,
131         "---@@@@@@@"
132         "--@@  @ o@"
133         "--@   @  @"
134         "--@X X X @"
135         "--@ X@@  @"
136         "@@@ X @ @@"
137         "@.....  @-"
138         "@@@@@@@@@-"
139         "Easy Does It"
140 };
141
142
143 static const struct {
144         unsigned int width, height;
145         unsigned char state[9 * 7 + 40 + 1]; } board009 = { 9, 7,
146         "@@@@@@@@@"
147         "@   +   @"
148         "@ X.@.X @"
149         "@  X.X  @"
150         "@@@.X.@@@"
151         "--@@o@@--"
152         "---@@@---"
153         "Claustrophobia"
154 };
155
156
157 static const struct {
158         unsigned int width, height;
159         unsigned char state[7 * 7 + 40 + 1]; } board010 = { 7, 7,
160         "--@@@@@"
161         "@@@   @"
162         "@o .X.@"
163         "@  X X@"
164         "@@@.X.@"
165         "--@   @"
166         "--@@@@@"
167         "Tight Squeeze"
168 };
169
170
171 static const struct {
172         unsigned int width, height;
173         unsigned char state[10 * 8 + 40 + 1]; } board011 = { 10, 8,
174         "--@@@@----"
175         "--@  @----"
176         "@@@  @@@@@"
177         "@  ..X   @"
178         "@oX.. X  @"
179         "@@@ X@@@@@"
180         "--@  @----"
181         "--@@@@----"
182         "Crossroads"
183 };
184
185
186 static const struct {
187         unsigned int width, height;
188         unsigned char state[10 * 6 + 40 + 1]; } board012 = { 10, 6,
189         "-@@@@@@@@@"
190         "@@       @"
191         "@   @X@X @"
192         "@ XX  .X.@"
193         "@ o@@@...@"
194         "@@@@-@@@@@"
195         "In The Corner"
196 };
197
198
199 static const struct {
200         unsigned int width, height;
201         unsigned char state[9 * 7 + 40 + 1]; } board013 = { 9, 7,
202         "---@@@@@-"
203         "@@@@   @@"
204         "@ X X X @"
205         "@o......@"
206         "@ X X X @"
207         "@@@@   @@"
208         "---@@@@@-"
209         "Get In Line"
210 };
211
212
213 static const struct {
214         unsigned int width, height;
215         unsigned char state[8 * 7 + 40 + 1]; } board014 = { 8, 7,
216         "--@@@@@-"
217         "@@@  o@-"
218         "@  X. @@"
219         "@  .X. @"
220         "@@@ +X @"
221         "--@   @@"
222         "--@@@@@-"
223         "Tighter Squeeze"
224 };
225
226
227 static const struct {
228         unsigned int width, height;
229         unsigned char state[8 * 7 + 40 + 1]; } board015 = { 8, 7,
230         "@@@@@@@-"
231         "@ .X. @@"
232         "@ X X  @"
233         "@ .X.  @"
234         "@ @@@ @@"
235         "@  o  @-"
236         "@@@@@@@-"
237         "Rotation #2"
238 };
239
240
241 static const struct {
242         unsigned int width, height;
243         unsigned char state[10 * 7 + 40 + 1]; } board016 = { 10, 7,
244         "---@@@@@@-"
245         "-@@@    @-"
246         "@@. X@@ @@"
247         "@..X X  o@"
248         "@.. X X @@"
249         "@@@@@@  @-"
250         "-----@@@@-"
251         "Up Against A Wall"
252 };
253
254
255 static const struct {
256         unsigned int width, height;
257         unsigned char state[7 * 7 + 40 + 1]; } board017 = { 7, 7,
258         "-@@@@@-"
259         "@@ . @@"
260         "@ X.X @"
261         "@  .Xo@"
262         "@ X.X @"
263         "@@ . @@"
264         "-@@@@@-"
265         "Lizard Eye"
266 };
267
268
269 static const struct {
270         unsigned int width, height;
271         unsigned char state[12 * 6 + 40 + 1]; } board018 = { 12, 6,
272         "-@@@@@@@@@@-"
273         "@@   @o   @@"
274         "@ X ....X  @"
275         "@  X@@@@ X @"
276         "@   @--@  @@"
277         "@@@@@--@@@@-"
278         "Two Rooms"
279 };
280
281
282 static const struct {
283         unsigned int width, height;
284         unsigned char state[10 * 7 + 40 + 1]; } board019 = { 10, 7,
285         "-@@@@@@@--"
286         "-@     @@@"
287         "@@X@@@   @"
288         "@ o X  X @"
289         "@ ..@ X @@"
290         "@@..@   @-"
291         "-@@@@@@@@-"
292         "Untitled1"
293 };
294
295
296 static const struct {
297         unsigned int width, height;
298         unsigned char state[8 * 6 + 40 + 1]; } board020 = { 8, 6,
299         "---@@@@@"
300         "@@@@  .@"
301         "@   X +@"
302         "@ XX X.@"
303         "@@o@@..@"
304         "-@@@@@@@"
305         "Untitled2"
306 };
307
308
309 static const struct {
310         unsigned int width, height;
311         unsigned char state[7 * 7 + 40 + 1]; } board021 = { 7, 7,
312         "@@@@@@@"
313         "@.   .@"
314         "@ X@X @"
315         "@.XoX.@"
316         "@ X@X @"
317         "@.   .@"
318         "@@@@@@@"
319         "Cornered"
320 };
321
322
323 static const struct {
324         unsigned int width, height;
325         unsigned char state[7 * 7 + 40 + 1]; } board022 = { 7, 7,
326         "@@@@@@@"
327         "@  .  @"
328         "@ X@X @"
329         "@. + .@"
330         "@ X@X @"
331         "@  .o @"
332         "@@@@@@@"
333         "Diamond"
334 };
335
336
337 static const struct {
338         unsigned int width, height;
339         unsigned char state[9 * 7 + 40 + 1]; } board023 = { 9, 7,
340         "@@@@@@@@-"
341         "@    o @-"
342         "@ X..  @@"
343         "@@@..@  @"
344         "--@@XXX @"
345         "---@    @"
346         "---@@@@@@"
347         "Untitled3"
348 };
349
350
351 static const struct {
352         unsigned int width, height;
353         unsigned char state[8 * 8 + 40 + 1]; } board024 = { 8, 8,
354         "@@@@@@@@"
355         "@   o  @"
356         "@ XX@  @"
357         "@@  X @@"
358         "-@.X  @-"
359         "-@@. @@-"
360         "--@..@--"
361         "--@@@@--"
362         "Untitled4"
363 };
364
365
366 static const struct {
367         unsigned int width, height;
368         unsigned char state[8 * 8 + 40 + 1]; } board025 = { 8, 8,
369         "-@@@@@@-"
370         "-@. ..@-"
371         "-@. X.@-"
372         "@@@  X@@"
373         "@ X  X @"
374         "@ @X@@ @"
375         "@   o  @"
376         "@@@@@@@@"
377         "Untitled5"
378 };
379
380
381 static const struct {
382         unsigned int width, height;
383         unsigned char state[7 * 7 + 40 + 1]; } board026 = { 7, 7,
384         "-@@@@@@"
385         "@@ . o@"
386         "@ X X @"
387         "@. + .@"
388         "@ X X @"
389         "@@ . @@"
390         "-@@@@@-"
391         "Untitled6"
392 };
393
394
395 static const struct {
396         unsigned int width, height;
397         unsigned char state[8 * 7 + 40 + 1]; } board027 = { 8, 7,
398         "--@@@@@@"
399         "--@    @"
400         "@@@XXX @"
401         "@o X.. @"
402         "@ X...@@"
403         "@@@@  @-"
404         "---@@@@-"
405         "Untitled7"
406 };
407
408
409 static const struct {
410         unsigned int width, height;
411         unsigned char state[12 * 5 + 40 + 1]; } board028 = { 12, 5,
412         "@@@@@@@@@@@@"
413         "@    ... X @"
414         "@ XXX+++ Xo@"
415         "@    ... X @"
416         "@@@@@@@@@@@@"
417         "Untitled8"
418 };
419
420
421 static const struct {
422         unsigned int width, height;
423         unsigned char state[8 * 7 + 40 + 1]; } board029 = { 8, 7,
424         "@@@@@@@@"
425         "@  @   @"
426         "@ X..X @"
427         "@oX.+ @@"
428         "@ X..X @"
429         "@  @   @"
430         "@@@@@@@@"
431         "Untitled9"
432 };
433
434
435 static const struct {
436         unsigned int width, height;
437         unsigned char state[11 * 9 + 40 + 1]; } board030 = { 11, 9,
438         "--@@@@@----"
439         "--@   @----"
440         "@@@X.X@@@@@"
441         "@   . X   @"
442         "@ @@X@@ o @"
443         "@   . @@@@@"
444         "@@@ . @----"
445         "--@   @----"
446         "--@@@@@----"
447         "Untitled10"
448 };
449
450
451 static const struct {
452         unsigned int width, height;
453         unsigned char state[11 * 7 + 40 + 1]; } board031 = { 11, 7,
454         "---@@@@@@@@"
455         "@@@@    . @"
456         "@  X X X. @"
457         "@  .@@@@.@@"
458         "@ X.X X o@-"
459         "@  .  @@@@-"
460         "@@@@@@@----"
461         "Untitled11"
462 };
463
464
465 static const struct {
466         unsigned int width, height;
467         unsigned char state[8 * 7 + 40 + 1]; } board032 = { 8, 7,
468         "-@@@@@--"
469         "-@   @@@"
470         "@@X@o .@"
471         "@  XX@.@"
472         "@ @X  .@"
473         "@     .@"
474         "@@@@@@@@"
475         "Untitled12"
476 };
477
478
479 static const struct {
480         unsigned int width, height;
481         unsigned char state[9 * 8 + 40 + 1]; } board033 = { 9, 8,
482         "---@@@@@-"
483         "@@@@.  @@"
484         "@ X.X.  @"
485         "@oX@ @X @"
486         "@ X. .  @"
487         "@@@@X@X @"
488         "--@. .  @"
489         "--@@@@@@@"
490         "Untitled13"
491 };
492
493
494 static const struct {
495         unsigned int width, height;
496         unsigned char state[9 * 8 + 40 + 1]; } board034 = { 9, 8,
497         "---@@@@@-"
498         "---@ o @-"
499         "---@XXX@-"
500         "@@@@   @-"
501         "@   .@X@@"
502         "@ X.X. .@"
503         "@  @.@.@@"
504         "@@@@@@@@-"
505         "Untitled14"
506 };
507
508
509 static const struct {
510         unsigned int width, height;
511         unsigned char state[9 * 8 + 40 + 1]; } board035 = { 9, 8,
512         "@@@@@@---"
513         "@    @---"
514         "@ X  @@@@"
515         "@ X+..+ @"
516         "@ +..+X @"
517         "@@@@  X @"
518         "---@ o  @"
519         "---@@@@@@"
520         "Untitled15"
521 };
522
523
524 static const struct {
525         unsigned int width, height;
526         unsigned char state[7 * 6 + 40 + 1]; } board036 = { 7, 6,
527         "@@@@@@@"
528         "@  +  @"
529         "@ .+. @"
530         "@ XXX @"
531         "@ o.  @"
532         "@@@@@@@"
533         "Untitled16"
534 };
535
536
537 static const struct {
538         unsigned int width, height;
539         unsigned char state[8 * 7 + 40 + 1]; } board037 = { 8, 7,
540         "@@@@@@@@"
541         "@..    @"
542         "@..X Xo@"
543         "@X@XXX@@"
544         "@..X X @"
545         "@..    @"
546         "@@@@@@@@"
547         "Untitled17"
548 };
549
550
551 static const struct {
552         unsigned int width, height;
553         unsigned char state[9 * 8 + 40 + 1]; } board038 = { 9, 8,
554         "---@@@@@@"
555         "@@@@.  o@"
556         "@  XXX  @"
557         "@.@@.@@.@"
558         "@   X   @"
559         "@  X.@ @@"
560         "@@@@   @-"
561         "---@@@@@-"
562         "Untitled18"
563 };
564
565
566 static const struct {
567         unsigned int width, height;
568         unsigned char state[12 * 7 + 40 + 1]; } board039 = { 12, 7,
569         "--@@@@@@@@@@"
570         "@@@   .    @"
571         "@   @@X@@  @"
572         "@ oX. . .X@@"
573         "@@ X@@X@@ @ "
574         "-@    .   @ "
575         "-@@@@@@@@@@ "
576         "Untitled19"
577 };
578
579
580 static const struct {
581         unsigned int width, height;
582         unsigned char state[9 * 7 + 40 + 1]; } board040 = { 9, 7,
583         "@@@@@@@@@"
584         "@.  .  .@"
585         "@@XXXXX@@"
586         "@..o+ ..@"
587         "@@XXXXX@@"
588         "@.  .  .@"
589         "@@@@@@@@@"
590         "Untitled20"
591 };
592
593
594 static const struct {
595         unsigned int width, height;
596         unsigned char state[8 * 7 + 40 + 1]; } board041 = { 8, 7,
597         "@@@@@---"
598         "@   @---"
599         "@  X@@@@"
600         "@.+*+  @"
601         "@ XX+  @"
602         "@   .  @"
603         "@@@@@@@@"
604         "Untitled21"
605 };
606
607
608 static const struct {
609         unsigned int width, height;
610         unsigned char state[9 * 7 + 40 + 1]; } board042 = { 9, 7,
611         "-@@@@@@@-"
612         "@@.X X.@@"
613         "@.+ X +.@"
614         "@  XoX  @"
615         "@.+ X +.@"
616         "@@.X X.@@"
617         "-@@@@@@@-"
618         "Untitled22"
619 };
620
621
622 const void * boards[] = {
623         &board001, &board002, &board003, &board004, &board005, &board006, &board007, &board008,
624         &board009, &board010, &board011, &board012, &board013, &board014, &board015, &board016,
625         &board017, &board018, &board019, &board020, &board021, &board022, &board023, &board024,
626         &board025, &board026, &board027, &board028, &board029, &board030, &board031, &board032,
627         &board033, &board034, &board035, &board036, &board037, &board038, &board039, &board040,
628         &board041, &board042, //&board043, &board044, &board045, &board046, &board047, &board048,
629 //      &board049, &board050, &board051, &board052, &board053, &board054, &board055, &board056,
630 //      &board057, &board058, &board059, &board060, &board061, &board062, &board063, &board064,
631 //      &board065, &board066, &board067, &board068, &board069, &board070, &board071, &board072,
632 //      &board073, &board074, &board075, &board076, &board077, &board078, &board079, &board080,
633 //      &board081, &board082, &board083, &board084, &board085, &board086, &board087, &board088,
634 //      &board089, &board090, &board091, &board092, &board093, &board094, &board095, &board096,
635 //      &board097, &board098, &board099, &board100, &board101, &board102, &board103, &board104,
636 };
637