1: \ sokoban - a maze game in FORTH
2:
3: \ Contest from Rick VanNorman in comp.lang.forth
4:
5: \ SOKOBAN
6:
7: \ Sokoban is a visual game of pushing. You (Soko) are represented by the
8: \ at-sign "@" You may move freely through the maze on unoccupied spaces.
9: \ The dollar-signs "$" are the rocks you have to push. You can only push
10: \ one rock at a time, and cannot push a rock through a wall "#" or over
11: \ another rock. The object is to push the rocks to their goals which are
12: \ indicated by the periods ".". There are 50 levels, the first of which
13: \ is shown below.
14:
15: \ program is ANS FORTH with environmental dependency of case-insensitiv
16: \ source. Tested with gforth, bigFORTH and pfe
17:
18: \ bell (7) is replaced with "Wuff!" ;-)
19: \ (this is a german joke)
20: \ I don't like the keyboard interpreting CASE-statement either, but
21: \ was to lazy to use a table.
22: \ I could have used blocks as level tables, but as I don't have a good
23: \ block editor for gforth now, I let it be.
24:
25: 40 Constant /maze \ maximal maze line
26:
27: Create maze 1 cells allot /maze 25 * allot \ current maze
28: Variable mazes 0 mazes ! \ root pointer
29: Variable soko 0 soko ! \ player position
30: Variable >maze 0 >maze ! \ current compiled maze
31:
32: \ score information
33:
34: Variable rocks 0 rocks ! \ number of rocks left
35: Variable level# 0 level# ! \ Current level
36: Variable moves 0 moves ! \ number of moves
37: Variable score 0 score ! \ total number of scores
38:
39: : new-maze ( n -- addr ) \ add a new level
40: here mazes rot 1 ?DO @ LOOP !
41: 0 , 0 , here >maze ! 0 , ;
42: : count-$ ( addr u -- n ) 0 rot rot
43: over + swap ?DO I c@ [char] $ = - LOOP ;
44: : m: ( "string" -- ) \ add a level line (top first!)
45: -1 parse tuck 2dup count-$ >maze @ 1 cells - +!
46: here swap move dup allot
47: /maze swap - here over bl fill allot
48: >maze @ here over cell+ - swap ! ;
49:
50: : maze-field ( -- addr n )
51: maze dup cell+ swap @ chars ;
52:
53: : .score ( -- )
54: ." Level: " level# @ 2 .r ." Score: " score @ 4 .r
55: ." Moves: " moves @ 6 .r ." Rocks: " rocks @ 2 .r ;
56:
57: : .maze ( -- ) \ display maze
58: 0 0 at-xy .score
59: cr maze-field over + swap
60: DO I /maze type cr /maze chars +LOOP ;
61:
62: : find-soko ( -- n )
63: maze-field 0
64: DO dup I chars + c@ [char] @ =
65: IF drop I UNLOOP EXIT THEN
66: LOOP true abort" No player in field!" ;
67:
68: : level ( n -- flag ) \ finds level n
69: dup level# !
70: mazes swap 0
71: ?DO @ dup 0= IF drop false UNLOOP EXIT THEN LOOP
72: cell+ dup @ rocks !
73: cell+ dup @ cell+ maze swap chars move
74: find-soko soko ! true ;
75:
76: \ now the playing rules as replacement strings
77:
78: : 'soko ( -- addr ) \ gives player's address
79: maze cell+ soko @ chars + ;
80:
81: : apply-rule? ( addr u offset -- flag )
82: 'soko 2swap
83: \ offset soko-addr addr u
84: 0 DO
85: over c@ over c@ <>
86: IF drop 2drop false UNLOOP EXIT THEN
87: >r over chars + r> char+
88: LOOP 2drop drop true ;
89:
90: : apply-rule! ( addr u offset -- )
91: 'soko
92: 2swap
93: \ offset soko-addr addr u
94: 0 DO
95: count rot tuck c! rot tuck chars + rot
96: LOOP 2drop drop ;
97:
98: : play-rule ( addr1 u1 addr2 u2 offset -- flag )
99: >r 2swap r@ apply-rule?
100: IF r> apply-rule! true ELSE r> drop 2drop false THEN ;
101:
102: \ player may move up, down, left and right
103:
104: : move: ( offset -- )
105: Create ,
106: DOES> @ >r 1 moves +!
107: S" @ " S" @" r@ play-rule IF r> soko +! EXIT THEN
108: S" @." S" &" r@ play-rule IF r> soko +! EXIT THEN
109: S" @$ " S" @$" r@ play-rule IF r> soko +! EXIT THEN
110: S" @*." S" &*" r@ play-rule IF r> soko +! EXIT THEN
111: S" @* " S" &$" r@ play-rule
112: IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
113: S" @$." S" @*" r@ play-rule
114: IF r> soko +! -1 rocks +! 1 score +! EXIT THEN
115: S" &*." S" .&*" r@ play-rule IF r> soko +! EXIT THEN
116: S" &$ " S" .@$" r@ play-rule IF r> soko +! EXIT THEN
117: S" & " S" .@" r@ play-rule IF r> soko +! EXIT THEN
118: S" &." S" .&" r@ play-rule IF r> soko +! EXIT THEN
119: S" &* " S" .&$" r@ play-rule
120: IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
121: -1 moves +! r> drop ;
122:
123: 1 move: soko-right
124: -1 move: soko-left
125: /maze move: soko-down
126: /maze negate move: soko-up
127:
128: : print-help
129: ." Move soko '@' with h, j, k or l key (like vi)" cr
130: ." or with vt100 cursor keys." cr ;
131:
132: : play-loop ( -- )
133: BEGIN
134: rocks @ 0=
135: IF
136: level# @ 1+ level 0= IF EXIT THEN
137: THEN
138: .maze
139: key
140: CASE
141: [char] ? OF print-help false ENDOF
142:
143: [char] h OF soko-left false ENDOF
144: [char] j OF soko-down false ENDOF
145: [char] k OF soko-up false ENDOF
146: [char] l OF soko-right false ENDOF
147:
148: \ vt100 cursor keys should work too
149: 27 OF key [char] [ <> ENDOF
150: [char] D OF soko-left false ENDOF
151: [char] B OF soko-down false ENDOF
152: [char] A OF soko-up false ENDOF
153: [char] C OF soko-right false ENDOF
154:
155: [char] q OF true ENDOF
156: false swap ENDCASE
157: UNTIL ;
158:
159: \ start game with "sokoban"
160:
161: : sokoban ( -- )
162: page 1 level IF play-loop ." Game finished!" THEN ;
163:
164: 001 new-maze
165: m: #####
166: m: # #
167: m: #$ #
168: m: ### $##
169: m: # $ $ #
170: m: ### # ## # ######
171: m: # # ## ##### ..#
172: m: # $ $ ..#
173: m: ##### ### #@## ..#
174: m: # #########
175: m: #######
176: 002 new-maze
177: m: ############
178: m: #.. # ###
179: m: #.. # $ $ #
180: m: #.. #$#### #
181: m: #.. @ ## #
182: m: #.. # # $ ##
183: m: ###### ##$ $ #
184: m: # $ $ $ $ #
185: m: # # #
186: m: ############
187: 003 new-maze
188: m: ########
189: m: # @#
190: m: # $#$ ##
191: m: # $ $#
192: m: ##$ $ #
193: m: ######### $ # ###
194: m: #.... ## $ $ #
195: m: ##... $ $ #
196: m: #.... ##########
197: m: ########
198: 004 new-maze
199: m: ########
200: m: # ....#
201: m: ############ ....#
202: m: # # $ $ ....#
203: m: # $$$#$ $ # ....#
204: m: # $ $ # ....#
205: m: # $$ #$ $ $########
206: m: # $ # #
207: m: ## #########
208: m: # # ##
209: m: # $ ##
210: m: # $$#$$ @#
211: m: # # ##
212: m: ###########
213: 005 new-maze
214: m: #####
215: m: # #####
216: m: # #$## #
217: m: # $ #
218: m: ######### ### #
219: m: #.... ## $ $###
220: m: #.... $ $$ ##
221: m: #.... ##$ $ @#
222: m: ######### $ ##
223: m: # $ $ #
224: m: ### ## #
225: m: # #
226: m: ######
227: 006 new-maze
228: m: ###### ###
229: m: #.. # ##@##
230: m: #.. ### #
231: m: #.. $$ #
232: m: #.. # # $ #
233: m: #..### # $ #
234: m: #### $ #$ #
235: m: # $# $ #
236: m: # $ $ #
237: m: # ## #
238: m: #########
239: 007 new-maze
240: m: #####
241: m: ####### ##
242: m: ## # @## $$ #
243: m: # $ #
244: m: # $ ### #
245: m: ### #####$###
246: m: # $ ### ..#
247: m: # $ $ $ ...#
248: m: # ###...#
249: m: # $$ # #...#
250: m: # ### #####
251: m: ####
252: 008 new-maze
253: m: ####
254: m: # ###########
255: m: # $ $ $ #
256: m: # $# $ # $ #
257: m: # $ $ # #
258: m: ### $# # #### #
259: m: #@#$ $ $ ## #
260: m: # $ #$# # #
261: m: # $ $ $ $ #
262: m: ##### #########
263: m: # #
264: m: # #
265: m: #......#
266: m: #......#
267: m: #......#
268: m: ########
269: 009 new-maze
270: m: #######
271: m: # ...#
272: m: ##### ...#
273: m: # . .#
274: m: # ## ...#
275: m: ## ## ...#
276: m: ### ########
277: m: # $$$ ##
278: m: ##### $ $ #####
279: m: ## #$ $ # #
280: m: #@ $ $ $ $ #
281: m: ###### $$ $ #####
282: m: # #
283: m: ########
284: 010 new-maze
285: m: ### #############
286: m: ##@#### # #
287: m: # $$ $$ $ $ ...#
288: m: # $$$# $ #...#
289: m: # $ # $$ $$ #...#
290: m: ### # $ #...#
291: m: # # $ $ $ #...#
292: m: # ###### ###...#
293: m: ## # # $ $ #...#
294: m: # ## # $$ $ $##..#
295: m: # ..# # $ #.#
296: m: # ..# # $$$ $$$ #.#
297: m: ##### # # #.#
298: m: # ######### #.#
299: m: # #.#
300: m: ###############
301: 011 new-maze
302: m: ####
303: m: #### # #
304: m: ### @###$ #
305: m: ## $ #
306: m: ## $ $$## ##
307: m: # #$## #
308: m: # # $ $$ # ###
309: m: # $ # # $ #####
310: m: #### # $$ # #
311: m: #### ## $ #
312: m: #. ### ########
313: m: #.. ..# ####
314: m: #...#.#
315: m: #.....#
316: m: #######
317: 012 new-maze
318: m: ################
319: m: # #
320: m: # # ###### #
321: m: # # $ $ $ $# #
322: m: # # $@$ ## ##
323: m: # # $ $ $###...#
324: m: # # $ $ ##...#
325: m: # ###$$$ $ ##...#
326: m: # # ## ##...#
327: m: ##### ## ##...#
328: m: ##### ###
329: m: # #
330: m: #######
331: 013 new-maze
332: m: ##### ####
333: m: #...# # ####
334: m: #...### $ #
335: m: #....## $ $###
336: m: ##....## $ #
337: m: ###... ## $ $ #
338: m: # ## # $ #
339: m: # ## # ### ####
340: m: # $ # #$ $ #
341: m: # $ @ $ $ #
342: m: # # $ $$ $ ###
343: m: # ###### ###
344: m: # ## ####
345: m: ###
346: 014 new-maze
347: m: #########
348: m: ## ## ######
349: m: ### # # ###
350: m: # $ #$ # # ... #
351: m: # # $#@$## # #.#. #
352: m: # # #$ # . . #
353: m: # $ $ # # #.#. #
354: m: # ## ##$ $ . . #
355: m: # $ # # #$#.#. #
356: m: ## $ $ $ $... #
357: m: #$ ###### ## #
358: m: # # ##########
359: m: ####
360: 015 new-maze
361: m: #######
362: m: ####### #
363: m: # # $@$ #
364: m: #$$ # #########
365: m: # ###......## #
366: m: # $......## # #
367: m: # ###...... #
368: m: ## #### ### #$##
369: m: # #$ # $ # #
370: m: # $ $$$ # $## #
371: m: # $ $ ###$$ # #
372: m: ##### $ # #
373: m: ### ### # #
374: m: # # #
375: m: ######## #
376: m: ####
377: 016 new-maze
378: m: ########
379: m: # # #
380: m: # $ #
381: m: ### #$ ####
382: m: # $ ##$ #
383: m: # # @ $ # $#
384: m: # # $ ####
385: m: ## ####$## #
386: m: # $#.....# # #
387: m: # $..**. $# ###
388: m: ## #.....# #
389: m: # ### #######
390: m: # $$ # #
391: m: # # #
392: m: ###### #
393: m: #####
394: 017 new-maze
395: m: #####
396: m: # ##
397: m: # # ####
398: m: # $ #### #
399: m: # $$ $ $#
400: m: ###@ #$ ##
401: m: # ## $ $ ##
402: m: # $ ## ## .#
403: m: # #$##$ #.#
404: m: ### $..##.#
405: m: # #.*...#
406: m: # $$ #.....#
407: m: # #########
408: m: # #
409: m: ####
410: 018 new-maze
411: m: ##########
412: m: #.. # #
413: m: #.. #
414: m: #.. # ####
415: m: ####### # ##
416: m: # #
417: m: # # ## # #
418: m: #### ## #### ##
419: m: # $ ##### # #
420: m: # # $ $ # $ #
421: m: # @$ $ # ##
422: m: #### ## #######
423: m: # #
424: m: ######
425: 019 new-maze
426: m: ###########
427: m: # . # #
428: m: # #. @ #
429: m: ##### ##..# ####
430: m: ## # ..### ###
431: m: # $ #... $ # $ #
432: m: # .. ## ## ## #
433: m: ####$##$# $ # # #
434: m: ## # #$ $$ # #
435: m: # $ # # # $## #
436: m: # #
437: m: # ########### #
438: m: #### ####
439: 020 new-maze
440: m: ######
441: m: # @####
442: m: ##### $ #
443: m: # ## ####
444: m: # $ # ## #
445: m: # $ # ##### #
446: m: ## $ $ # #
447: m: ## $ $ ### # #
448: m: ## # $ # # #
449: m: ## # #$# # #
450: m: ## ### # # ######
451: m: # $ #### # #....#
452: m: # $ $ ..#.#
453: m: ####$ $# $ ....#
454: m: # # ## ....#
455: m: ###################
456: 021 new-maze
457: m: ##########
458: m: ##### ####
459: m: # # $ #@ #
460: m: # #######$#### ###
461: m: # # ## # #$ ..#
462: m: # # $ # # #.#
463: m: # # $ # #$ ..#
464: m: # # ### ## #.#
465: m: # ### # # #$ ..#
466: m: # # # #### #.#
467: m: # #$ $ $ #$ ..#
468: m: # $ # $ $ # #.#
469: m: #### $### #$ ..#
470: m: # $$ ###....#
471: m: # ## ######
472: m: ########
473: 022 new-maze
474: m: #########
475: m: # #
476: m: # ####
477: m: ## #### # #
478: m: ## #@## #
479: m: # $$$ $ $$#
480: m: # # ## $ #
481: m: # # ## $ ####
482: m: #### $$$ $# #
483: m: # ## ....#
484: m: # # # #.. .#
485: m: # # # ##...#
486: m: ##### $ #...#
487: m: ## #####
488: m: #####
489: 023 new-maze
490: m: ###### ####
491: m: # ####### #####
492: m: # $# # $ # #
493: m: # $ $ $ # $ $ #
494: m: ##$ $ # @# $ #
495: m: # $ ########### ##
496: m: # # #.......# $#
497: m: # ## # ......# #
498: m: # # $........$ #
499: m: # # $ #.... ..# #
500: m: # $ $####$#### $#
501: m: # $ ### $ $ ##
502: m: # $ $ $ $ #
503: m: ## ###### $ ##### #
504: m: # # #
505: m: ###################
506: 024 new-maze
507: m: #######
508: m: # # ####
509: m: ##### $#$ # ##
510: m: #.. # # # #
511: m: #.. # $#$ # $####
512: m: #. # #$ # #
513: m: #.. $# # $ #
514: m: #..@# #$ #$ # #
515: m: #.. # $# $# #
516: m: #.. # #$$#$ # ##
517: m: #.. # $# # $#$ #
518: m: #.. # # # # #
519: m: ##. #### ##### #
520: m: #### #### #####
521: 025 new-maze
522: m: ###############
523: m: #.......... .####
524: m: #..........$$.# #
525: m: ###########$ # ##
526: m: # $ $ $ #
527: m: ## #### # $ # #
528: m: # # ## # ##
529: m: # $# # ## ### ##
530: m: # $ #$### ### ##
531: m: ### $ # # ### ##
532: m: ### $ ## # # ##
533: m: # $ # $ $ $ #
534: m: # $ $#$$$ # #
535: m: # # $ #####
536: m: # @## # # #
537: m: ##############
538: 026 new-maze
539: m: ####
540: m: # ##############
541: m: # # ..#......#
542: m: # # # ##### ...#
543: m: ##$# ........#
544: m: # ##$###### ####
545: m: # $ # ######@ #
546: m: ##$ # $ ###### #
547: m: # $ #$$$## #
548: m: # # #$#$###
549: m: # #### #$$$$$ #
550: m: # # $ # #
551: m: # # ## ###
552: m: # ######$###### $ #
553: m: # # # #
554: m: ########## #####
555: 027 new-maze
556: m: #######
557: m: # # #####
558: m: ## # #...###
559: m: # $# #... #
560: m: # $ #$$ ... #
561: m: # $# #... .#
562: m: # # $########
563: m: ##$ $ $ #
564: m: ## # $$ # #
565: m: ###### ##$$@#
566: m: # ##
567: m: ########
568: 028 new-maze
569: m: #################
570: m: #... # # ##
571: m: ##..... $## # #$ #
572: m: #......# $ # #
573: m: #......# # # # #
574: m: ######### $ $ $ #
575: m: # #$##$ ##$##
576: m: ## $ # $ #
577: m: # ## ### # ##$ #
578: m: # $ $$ $ $ #
579: m: # $ $##$ ######
580: m: ####### @ ##
581: m: ######
582: 029 new-maze
583: m: #####
584: m: ##### #
585: m: ## $ $ ####
586: m: ##### $ $ $ ##.#
587: m: # $$ ##..#
588: m: # ###### ###.. #
589: m: ## # # #... #
590: m: # $ # #... #
591: m: #@ #$ ## ####...#
592: m: #### $ $$ ##..#
593: m: ## $ $ $...#
594: m: # $$ $ # .#
595: m: # $ $ ####
596: m: ###### #
597: m: #####
598: 030 new-maze
599: m: #####
600: m: # ##
601: m: # $ #########
602: m: ## # # ######
603: m: ## # $#$#@ # #
604: m: # # $ # $ #
605: m: # ### ######### ##
606: m: # ## ..*..... # ##
607: m: ## ## *.*..*.* # ##
608: m: # $########## ##$ #
609: m: # $ $ $ $ #
610: m: # # # # # #
611: m: ###################
612: 031 new-maze
613: m: ###########
614: m: # # #
615: m: ##### # $ $ #
616: m: # ##### $## # ##
617: m: # $ ## # ## $ #
618: m: # $ @$$ # ##$$$ #
619: m: ## ### # ## #
620: m: ## # ### #####$#
621: m: ## # $ #....#
622: m: # ### ## $ #....##
623: m: # $ $ # #..$. #
624: m: # ## $ # ##.... #
625: m: ##### ######...##
626: m: ##### #####
627: 032 new-maze
628: m: ####
629: m: # #########
630: m: ## ## # #
631: m: # $# $@$ ####
632: m: #$ $ # $ $# ##
633: m: ## $## #$ $ #
634: m: # # # # $$$ #
635: m: # $ $ $## ####
636: m: # $ $ #$# # #
637: m: ## ### ###$ #
638: m: # #.... #
639: m: ####......####
640: m: #....####
641: m: #...##
642: m: #...#
643: m: #####
644: 033 new-maze
645: m: ####
646: m: ##### #
647: m: ## $#
648: m: ## $ ## ###
649: m: #@$ $ # $ #
650: m: #### ## $#
651: m: #....#$ $ #
652: m: #....# $#
653: m: #.... $$ ##
654: m: #... # $ #
655: m: ######$ $ #
656: m: # ###
657: m: #$ ###
658: m: # #
659: m: ####
660: 034 new-maze
661: m: ############
662: m: ## ## #
663: m: ## $ $ #
664: m: #### ## $$ #
665: m: # $ # #
666: m: # $$$ # ####
667: m: # # # $ ##
668: m: # # # $ #
669: m: # $# $# #
670: m: # ..# ####
671: m: ####.. $ #@#
672: m: #.....# $# #
673: m: ##....# $ #
674: m: ###..## #
675: m: ############
676: 035 new-maze
677: m: #########
678: m: #.... ##
679: m: #.#.# $ ##
680: m: ##....# # @##
681: m: # ....# # ##
682: m: # #$ ##$ #
683: m: ## ### $ #
684: m: #$ $ $ $# #
685: m: # # $ $ ## #
686: m: # ### ## #
687: m: # ## ## ##
688: m: # $ # $ #
689: m: ###$ $ ###
690: m: # #####
691: m: ####
692: 036 new-maze
693: m: ############ ######
694: m: # # # ###....#
695: m: # $$# @ .....#
696: m: # # ### # ....#
697: m: ## ## ### # ....#
698: m: # $ $ # # ####
699: m: # $ $## # #
700: m: #### # #### # ## #
701: m: # # #$ ## # #
702: m: # $ $ # ## # ##
703: m: # # $ $ # # #
704: m: # $ ## ## # #####
705: m: # $$ $$ #
706: m: ## ## ### $ #
707: m: # # # #
708: m: ###### ######
709: 037 new-maze
710: m: #####
711: m: ##### ###### #
712: m: # #### $ $ $ #
713: m: # $ ## ## ## ##
714: m: # $ $ $ $ #
715: m: ### $ ## ## ##
716: m: # ##### #####$$ #
717: m: ##$##### @## #
718: m: # $ ###$### $ ##
719: m: # $ # ### ###
720: m: # $$ $ # $$ #
721: m: # # ## #
722: m: #######.. .###
723: m: #.........#
724: m: #.........#
725: m: ###########
726: 038 new-maze
727: m: ###########
728: m: #...... #########
729: m: #...... # ## #
730: m: #..### $ $ #
731: m: #... $ $ # ## #
732: m: #...#$##### # #
733: m: ### # #$ #$ #
734: m: # $$ $ $ $## #
735: m: # $ #$#$ ##$ #
736: m: ### ## # ## #
737: m: # $ $ ## ######
738: m: # $ $ #
739: m: ## # # #
740: m: #####@#####
741: m: ###
742: 039 new-maze
743: m: ####
744: m: ####### @#
745: m: # $ #
746: m: # $## $#
747: m: ##$#...# #
748: m: # $... #
749: m: # #. .# ##
750: m: # # #$ #
751: m: #$ $ #
752: m: # #######
753: m: ####
754: 040 new-maze
755: m: ######
756: m: #############....#
757: m: ## ## ##....#
758: m: # $$## $ @##....#
759: m: # $$ $# ....#
760: m: # $ ## $$ # # ...#
761: m: # $ ## $ # ....#
762: m: ## ##### ### ##.###
763: m: ## $ $ ## . #
764: m: # $### # ##### ###
765: m: # $ # #
766: m: # $ #$ $ $### #
767: m: # $$$# $ # ####
768: m: # # $$ #
769: m: ###### ###
770: m: #####
771: 041 new-maze
772: m: ############
773: m: # ##
774: m: # # #$$ $ #
775: m: #$ #$# ## @#
776: m: ## ## # $ # ##
777: m: # $ #$ # #
778: m: # # $ # #
779: m: ## $ $ ## #
780: m: # # ## $ #
781: m: # ## $$# #
782: m: ######$$ # #
783: m: #....# ########
784: m: #.#... ##
785: m: #.... #
786: m: #.... #
787: m: #########
788: 042 new-maze
789: m: #####
790: m: ## ##
791: m: ## #
792: m: ## $$ #
793: m: ## $$ $ #
794: m: # $ $ #
795: m: #### # $$ #####
796: m: # ######## ## #
797: m: #. $$$@#
798: m: #.# ####### ## ##
799: m: #.# #######. #$ $##
800: m: #........... # #
801: m: ############## $ #
802: m: ## ##
803: m: ####
804: 043 new-maze
805: m: ########
806: m: #### ######
807: m: # ## $ $ @#
808: m: # ## ##$#$ $ $##
809: m: ### ......# $$ ##
810: m: # ......# # #
811: m: # # ......#$ $ #
812: m: # #$...... $$# $ #
813: m: # ### ###$ $ ##
814: m: ### $ $ $ $ #
815: m: # $ $ $ $ #
816: m: ###### ######
817: m: #####
818: 044 new-maze
819: m: #######
820: m: ##### # ####
821: m: # # $ #
822: m: #### #$$ ## ## #
823: m: ## # # ## ###
824: m: # ### $#$ $ $ #
825: m: #... # ## # #
826: m: #...# @ # ### ##
827: m: #...# ### $ $ #
828: m: ######## ## # #
829: m: #########
830: 045 new-maze
831: m: #####
832: m: # #
833: m: # # #######
834: m: # $@######
835: m: # $ ##$ ### #
836: m: # #### $ $ #
837: m: # ##### # #$ ####
838: m: ## #### ##$ #
839: m: # $# $ # ## ## #
840: m: # # #...# #
841: m: ###### ### ... #
842: m: #### # #...# #
843: m: # ### # #
844: m: # #
845: m: #########
846: 046 new-maze
847: m: ##########
848: m: # ####
849: m: # ###### # ##
850: m: # # $ $ $ $ #
851: m: # #$ #
852: m: ###$ $$# ###
853: m: # ## # $##
854: m: ##$# $ @#
855: m: # $ $ ###
856: m: # # $ #
857: m: # ## # #
858: m: ## ##### #
859: m: # #
860: m: #.......###
861: m: #.......#
862: m: #########
863: 047 new-maze
864: m: ####
865: m: ######### ##
866: m: ## $ $ #####
867: m: # ## ## ##...#
868: m: # #$$ $ $$#$##...#
869: m: # # @ # ...#
870: m: # $# ###$$ ...#
871: m: # $ $$ $ ##....#
872: m: ###$ #######
873: m: # #######
874: m: ####
875: 048 new-maze
876: m: #########
877: m: #*.*#*.*#
878: m: #.*.*.*.#
879: m: #*.*.*.*#
880: m: #.*.*.*.#
881: m: #*.*.*.*#
882: m: ### ###
883: m: # #
884: m: ###### ######
885: m: # #
886: m: # $ $ $ $ $ #
887: m: ## $ $ $ $ ##
888: m: #$ $ $ $ $#
889: m: # $@$ #
890: m: # ##### #
891: m: #### ####
892: 049 new-maze
893: m: ####
894: m: # ##
895: m: # ##
896: m: # $$ ##
897: m: ###$ $ ##
898: m: #### $ #
899: m: ### # ##### #
900: m: # # #....$ #
901: m: # # $ ....# #
902: m: # $ # #.*..# #
903: m: ### #### ### #
904: m: #### @$ ##$##
905: m: ### $ #
906: m: # ## #
907: m: #########
908: 050 new-maze
909: m: ############
910: m: ##.. # #
911: m: ##..* $ $ #
912: m: ##..*.# # # $##
913: m: #..*.# # # $ #
914: m: ####...# # # #
915: m: # ## # #
916: m: # @$ $ ### # ##
917: m: # $ $ # # #
918: m: ###$$ # # # # #
919: m: # $ # # #####
920: m: # $# ##### #
921: m: #$ # # # #
922: m: # ### ## #
923: m: # # # ##
924: m: #### ######
925: 051 new-maze
926: m: #########
927: m: # #
928: m: # $ $#
929: m: #### #
930: m: # $ ##
931: m: #### $ #
932: m: #.. $ ## ####
933: m: #.. $## #
934: m: #.. $ #
935: m: #.###$### #@#
936: m: #.# # ###
937: m: ### #######
938: 052 new-maze
939: m: ####################
940: m: # ########## @#
941: m: # $# # ######
942: m: # #### # ###
943: m: ##### # ###
944: m: # $ # ###
945: m: # $#### # # #
946: m: # # # #..#$### # #
947: m: # # #$ #..# $ $$ #
948: m: # #..# # # #
949: m: # # #..# # # #
950: m: ####################
951: 053 new-maze
952: m: ####################
953: m: # ###
954: m: # $# $ ## $ ##
955: m: # $### # $$ ##
956: m: #.### $ $ ## ##
957: m: #...# # # #$ #
958: m: #..##$$#### $ # #
959: m: #...# $ ## ###
960: m: #...$ ### # # #
961: m: ##.. $# ## ##@ #
962: m: ###.# #
963: m: ####################
964: 054 new-maze
965: m: ####################
966: m: # # # # #@#
967: m: # $ $ $ # #
968: m: ## ###..## ### #
969: m: # #....#$# $### #
970: m: # $ #....# $ $ $ #
971: m: # #....# # # $ $ #
972: m: # ##..## #$# #
973: m: ##$## ## # #$##
974: m: # $ $ # # #
975: m: # # # # #
976: m: ####################
977: 055 new-maze
978: m: ####################
979: m: # @## # ##
980: m: # ## $ $ ##
981: m: # ###....# # # ###
982: m: # #....# # # $ #
983: m: ### #...# # #
984: m: ## ##.# $ $ #
985: m: ## $ $ ### # # ###
986: m: ## $ # # $ #
987: m: #### $ $# # # # $ #
988: m: #### # # ##
989: m: ####################
990: 056 new-maze
991: m: ####################
992: m: # # ## # @###
993: m: ## $ # $### #
994: m: ##$# $ ##$# $ $ #
995: m: # $# $ ###
996: m: # ## $ ### #....#
997: m: # # $# # # # #....##
998: m: # $ $ # #....###
999: m: ##$ ### $ #....####
1000: m: # # $ ######
1001: m: # # # ######
1002: m: ####################
1003: 057 new-maze
1004: m: ####################
1005: m: #@ ### # # #
1006: m: # # # # $ $ #
1007: m: ##### # $ $#$# #
1008: m: #.#..# ##$ $ #
1009: m: #..... $ # ##
1010: m: #..... ###$##$###
1011: m: #.#..# $ # #
1012: m: ##### # #$ $ #
1013: m: ##### # $ $ $ #
1014: m: ##### # # # # #
1015: m: ####################
1016: 058 new-maze
1017: m: ####################
1018: m: ##... ## # # #
1019: m: #.... $ ## #
1020: m: #....# # #$###$ #
1021: m: #...# # # #
1022: m: ##.# #$ # $## #
1023: m: # # # $ $ ### $ #
1024: m: # $ $ # # ## #
1025: m: ## # ## #$$# $# # #
1026: m: # # $ $ # ##
1027: m: # # # # @#
1028: m: ####################
1029: 059 new-maze
1030: m: ####################
1031: m: # # #@# ## #####
1032: m: # # # $ $ #####
1033: m: # # ###### $ ###
1034: m: # # #....# $$ #
1035: m: ##$##$##....# #
1036: m: # #....##$##$##
1037: m: # $$ #....# #
1038: m: # $ $ # # ### #
1039: m: ##### $ $ $ #
1040: m: ##### # # # ##
1041: m: ####################
1042: 060 new-maze
1043: m: ####################
1044: m: # ###..### #
1045: m: # $$ ###..### $@ #
1046: m: # # ##......# $ #
1047: m: # #......# $ #
1048: m: #### ###..######$ #
1049: m: # $$$ #..# # #
1050: m: # $# $ $ $$ #$ #
1051: m: # # ## $ ## # #
1052: m: # $ $ ## $ $ #
1053: m: # # ## ## # #
1054: m: ####################
1055: 061 new-maze
1056: m: ####################
1057: m: # # # # # # #
1058: m: # @# # ## $ $ ##
1059: m: #### # # # $ #
1060: m: # # ## #$ ## ## #
1061: m: # $ $ $ #
1062: m: #..###$$## $##$ ## #
1063: m: #..#.# # $ $ # #
1064: m: #....# $$ ##$ ####
1065: m: #....# ##### #
1066: m: #...### ## #
1067: m: ####################
1068: 062 new-maze
1069: m: ####################
1070: m: #....# # # #
1071: m: #....# # $ $ #
1072: m: #.... ## $# # $#$ #
1073: m: #...# $ $# $ #
1074: m: #..#### # $ $$ #
1075: m: # #### #### ###
1076: m: # # # #
1077: m: # ## # $ # $ $ #
1078: m: # ## $ ## $ $ #
1079: m: # @# # # #
1080: m: ####################
1081: 063 new-maze
1082: m: ####################
1083: m: #....### #
1084: m: #....##### # #$# ##
1085: m: #....### #$ $ #
1086: m: #....### $ #$$##
1087: m: ## #### $# #$ $ #
1088: m: ## #### $ $ # #
1089: m: #@ ####$###$## $ #
1090: m: ## # # $ #
1091: m: ## ### # $ ####
1092: m: ######## # # #
1093: m: ####################
1094: 064 new-maze
1095: m: ####################
1096: m: # # @#...###
1097: m: # # ##...##
1098: m: # # # ##$## ## ....#
1099: m: # $ # $$$ ....#
1100: m: ###$### $$ ### ##.#
1101: m: # $ # # ####
1102: m: # $ # ### # # #
1103: m: ## #$## $ $$ #
1104: m: # $ ## # # # #
1105: m: # # # # #
1106: m: ####################
1107: 065 new-maze
1108: m: ####################
1109: m: # # #...#@ #
1110: m: # # ....# #
1111: m: # $ # #....# #
1112: m: # ##$#### ##....# #
1113: m: # $ $ # #...# #
1114: m: # $$ # # # $$ #
1115: m: ### $$$# $$ $ #
1116: m: # $ # # # $# #
1117: m: # $# # $ #
1118: m: # # # # # #
1119: m: ####################
1120: 066 new-maze
1121: m: ####################
1122: m: #####@###.##...## #
1123: m: #####$ ..#...# #
1124: m: #### ......# $ #
1125: m: ### $ #.....## # ##
1126: m: ## $$# ##### $ $ #
1127: m: ## $# $ ## $$ #
1128: m: ## # # # $ $ #
1129: m: ## $$ ### #$## #
1130: m: ## $# $ $ $ ##
1131: m: ### # # ###
1132: m: ####################
1133: 067 new-maze
1134: m: ####################
1135: m: #@ # # #
1136: m: ## ### ## #### # ##
1137: m: # # # $$ #
1138: m: # # # # $ # $ ## ##
1139: m: # $ # #$$ # #
1140: m: # ### # ## ##
1141: m: #..#.# $ # $ # #
1142: m: #..#.# $ # ## $$ #
1143: m: #....## $$ $ # #
1144: m: #.....## # #
1145: m: ####################
1146: 068 new-maze
1147: m: ####################
1148: m: # # # # ##
1149: m: # $# $ $ ##...$ $ #
1150: m: # $ # ##....# $ #
1151: m: # ## $ ##....# $ #
1152: m: # $ #....## $ #
1153: m: # $## #...# #
1154: m: # $$$##$## ### ##
1155: m: # # # # # # #
1156: m: # $ # $ ## #
1157: m: # # #@ #
1158: m: ####################
1159: 069 new-maze
1160: m: ####################
1161: m: # # # # # # #
1162: m: # $ $ $ #
1163: m: ## # #$###$## ## #
1164: m: # $ $ # $ #
1165: m: # ###$##$# # $ #
1166: m: # # $ $ ###### $#
1167: m: # $ $$ $ #@#.#...#
1168: m: # # # # #.#...#
1169: m: # ########## #.....#
1170: m: # #.....#
1171: m: ####################
1172: 070 new-maze
1173: m: ####################
1174: m: # # # ## ##
1175: m: # $# $ # ## #
1176: m: # $ $ #..# $ #
1177: m: # $ $ #....# # ##
1178: m: # $# #......### $ #
1179: m: # # #....# #$ #
1180: m: # $ ####..# # #
1181: m: ## $ ## # # $ $##
1182: m: ### $ $#@$ $# #
1183: m: #### # # #
1184: m: ####################
1185: 071 new-maze
1186: m: ####################
1187: m: # ....# ####
1188: m: # .... #
1189: m: # # ########## #
1190: m: # #$ # ###..#
1191: m: # $ #$$### #..#
1192: m: # $ ### $ $ #..#
1193: m: # $ # $ $ # ##..#
1194: m: # # $$ # $ ## ##
1195: m: #@## $# $ $ ##
1196: m: ## ## # ###
1197: m: ####################
1198: 072 new-maze
1199: m: ####################
1200: m: # # #@ # #
1201: m: # $$ #$$# # # ## #
1202: m: # # $ $ #$$ # #
1203: m: ## # # # # # # #
1204: m: # ## # #
1205: m: # # $ # # # #
1206: m: # $ #$ # # $ #..#
1207: m: ##$ # #### #...#
1208: m: # $ #....#
1209: m: # # # #.....#
1210: m: ####################
1211: 073 new-maze
1212: m: ####################
1213: m: # # ##### #
1214: m: ## $ # #### $ #
1215: m: #### $$ #..# # #
1216: m: # $ $ ##..#### ##
1217: m: # $ ###.... $$ #
1218: m: # #$# ....# # $ #
1219: m: # # # $ ..###$# #
1220: m: # # $ #..# ## #
1221: m: # $# #### # $##
1222: m: # # # @# ##
1223: m: ####################
1224: 074 new-maze
1225: m: ####################
1226: m: # # # # #@#
1227: m: # $ $ # $ # #
1228: m: ##$# $### # $$# #
1229: m: # # #.### #$ $ #
1230: m: # #$#....# # ### #
1231: m: # $ #.....## # #
1232: m: ##$ #.#....#$$ $ #
1233: m: # ######..## # # #
1234: m: # $ $ ### #
1235: m: # # # # #
1236: m: ####################
1237: 075 new-maze
1238: m: ####################
1239: m: # # # # #@## # #
1240: m: # $ #
1241: m: # ##$# ##### $ # ##
1242: m: ## ##.....# # #
1243: m: ##$##$#.....###$#$ #
1244: m: # # ##.....# # ##
1245: m: # $ ##..## # #
1246: m: # $ # $ $ $$$ #
1247: m: ## $ $# # # $ #
1248: m: # ## # # #
1249: m: ####################
1250: 076 new-maze
1251: m: ###### #####
1252: m: # # # #
1253: m: # $ #### $ #
1254: m: # $ $ #
1255: m: # ###@###$ #
1256: m: ########## ###
1257: m: #.. ## #
1258: m: #.. ##$ #
1259: m: #.. ## $ #
1260: m: #.. ## $ #
1261: m: #.. $ $ #
1262: m: ### #########
1263: m: ####
1264: 077 new-maze
1265: m: ###########
1266: m: # #
1267: m: # $ $ #
1268: m: ###### # $ ##### #
1269: m: # ##### $ ##$#
1270: m: # $ $ #
1271: m: # ## ## #
1272: m: # ##@##### ## #
1273: m: # #### # ## ##
1274: m: #....# # $ #
1275: m: #....# # #
1276: m: ###### #######
1277: 078 new-maze
1278: m: #############
1279: m: # #
1280: m: # ### $$ #
1281: m: # # $ $ #
1282: m: # $####$######
1283: m: # $ ## #####
1284: m: # $$ $ ...#
1285: m: ### ## $$# ...#
1286: m: # ## # ...#
1287: m: # # ...#
1288: m: ###@#############
1289: m: ###
1290: 079 new-maze
1291: m: #################
1292: m: ###@## ...#
1293: m: # # ...#
1294: m: # $ # ...#
1295: m: # $$ # ...#
1296: m: ## $ ###$##########
1297: m: # ### $ #
1298: m: ## $ $ #
1299: m: # $ # $ #
1300: m: # $ # #
1301: m: # $ # #
1302: m: # # #
1303: m: ###########
1304: 080 new-maze
1305: m: #####
1306: m: ########## #
1307: m: # # #
1308: m: # $ $ $$ #
1309: m: # ##### ## $ #
1310: m: #$$ #$## $ #
1311: m: # ### # ##$ #
1312: m: ###### ### $ $ #
1313: m: #.... ## #
1314: m: #.... ######
1315: m: #.... #
1316: m: ###########@##
1317: m: ###
1318: 081 new-maze
1319: m: ######
1320: m: #### #
1321: m: # ## #
1322: m: # $ #
1323: m: ### #### ########
1324: m: # $ $ ## ...#
1325: m: # $$ $$ ...#
1326: m: # $ $## ...#
1327: m: ##@## ## ## ...#
1328: m: ### $ ########
1329: m: # $$ #
1330: m: # # #
1331: m: #########
1332: 082 new-maze
1333: m: ####### #########
1334: m: # # # ## #
1335: m: # ### # # $ #
1336: m: # # $ ### $ #
1337: m: # $$ ##$ #
1338: m: # #### ## #
1339: m: #@############ ##
1340: m: ###.. #####$ #
1341: m: #.. #### #
1342: m: #.. $$ #
1343: m: #.. #### $ #
1344: m: #.. # # #
1345: m: ######## #####
1346: 083 new-maze
1347: m: #######
1348: m: # ##########
1349: m: # # # ##
1350: m: # $ # $ $ #
1351: m: # $ # $ ## #
1352: m: # $$ ##$ $ #
1353: m: ## # ## #######
1354: m: ## # ## ...#
1355: m: # #$ ...#
1356: m: # $$ ...#
1357: m: # ##@# ...#
1358: m: ################
1359: 084 new-maze
1360: m: ############
1361: m: # # ##
1362: m: # $ $ # ######
1363: m: #### ##### #
1364: m: #.. # #### #
1365: m: #.#### #### #
1366: m: #.... # $ ####
1367: m: # ...# # $$$# ##
1368: m: ###.#### ## $@$ #
1369: m: # ##### $ # #
1370: m: # #.# $ $###$ #
1371: m: # #.######## # $ #
1372: m: # #.. ## $ #
1373: m: # # ####### $ # # #
1374: m: # # # ##
1375: m: ##### ##########
1376: 085 new-maze
1377: m: ####################
1378: m: # # # #
1379: m: # $ ## ### ##
1380: m: ##### ## $ $ #
1381: m: ##..## # # $ # # #
1382: m: #.... $ ##$# ##
1383: m: #.... $##### #$##
1384: m: ##..# # # # $ #
1385: m: ###.# # $ $ # @#
1386: m: ## $ $ # # ####
1387: m: ## ###########
1388: m: ####################
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>