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 and bigFORTH
17:
18: \ really uses "dump" terminal: No PAGE, no AT-XY to speed things up
19: \ Even bell (7) is replaced with "Wuff!" ;-)
20: \ (this is a german joke)
21: \ I don't like the keyboard interpreting CASE-statement either, but
22: \ was to lazy to use a table.
23: \ I could have used blocks as level tables, but as I don't have a good
24: \ block editor for gforth now, I let it be.
25:
26: 40 Constant /maze \ maximal maze line
27:
28: Create maze 1 cells allot /maze 25 * allot \ current maze
29: Variable mazes 0 mazes ! \ root pointer
30: Variable soko 0 soko ! \ player position
31: Variable >maze 0 >maze ! \ current compiled maze
32: >maze off
33:
34: \ score information
35:
36: Variable rocks 0 rocks ! \ number of rocks left
37: Variable level# 0 level# ! \ Current level
38: Variable moves 0 moves ! \ number of moves
39: Variable score 0 score ! \ total number of scores
40:
41: : new-maze ( n -- addr ) \ add a new level
42: here mazes rot 1 ?DO @ LOOP !
43: 0 , 0 , here >maze ! 0 , ;
44: : count-$ ( addr u -- n ) 0 rot rot
45: bounds ?DO I c@ [char] $ = - LOOP ;
46: : m: ( "string" -- ) \ add a level line (top first!)
47: -1 parse tuck 2dup count-$ >maze @ 1 cells - +!
48: here swap move dup allot
49: /maze swap - here over bl fill allot
50: >maze @ here over cell+ - swap ! ;
51:
52: : maze-field ( -- addr n )
53: maze dup cell+ swap @ chars ;
54:
55: : .score ( -- )
56: ." Level: " level# @ 2 .r ." Score: " score @ 4 .r
57: ." Moves: " moves @ 6 .r ." Rocks: " rocks @ 2 .r ;
58:
59: : .maze ( -- ) \ display maze
60: 0 0 at-xy .score
61: cr maze-field bounds
62: DO I /maze type cr /maze chars +LOOP ;
63:
64: : find-soko ( -- n )
65: maze-field 0
66: DO dup I chars + c@ [char] @ =
67: IF drop I UNLOOP EXIT THEN
68: LOOP true abort" No player in field!" ;
69:
70: : level ( n -- flag ) \ finds level n
71: dup level# !
72: mazes swap 0
73: ?DO @ dup 0= IF drop false UNLOOP EXIT THEN LOOP
74: cell+ dup @ rocks !
75: cell+ dup @ cell+ maze swap chars move
76: find-soko soko ! true ;
77:
78: \ now the playing rules as replacement strings
79:
80: : 'soko ( -- addr ) \ gives player's address
81: maze cell+ soko @ chars + ;
82:
83: : apply-rule? ( addr u offset -- flag )
84: 'soko 2swap
85: \ offset soko-addr addr u
86: 0 DO
87: over c@ over c@ <>
88: IF drop 2drop false UNLOOP EXIT THEN
89: >r over chars + r> char+
90: LOOP 2drop drop true ;
91:
92: : apply-rule! ( addr u offset -- )
93: 'soko
94: 2swap
95: \ offset soko-addr addr u
96: 0 DO
97: count rot tuck c! rot tuck chars + rot
98: LOOP 2drop drop ;
99:
100: : play-rule ( addr1 u1 addr2 u2 offset -- flag )
101: >r 2swap r@ apply-rule?
102: IF r> apply-rule! true ELSE rdrop 2drop false THEN ;
103:
104: \ player may move up, down, left and right
105:
106: : move: ( offset -- )
107: Create ,
108: DOES> @ >r 1 moves +!
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 IF r> soko +! EXIT THEN
112: S" @*." S" &*" r@ play-rule IF r> soko +! EXIT THEN
113: S" @* " S" &$" r@ play-rule
114: IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
115: S" @$." S" @*" r@ play-rule
116: IF r> soko +! -1 rocks +! 1 score +! 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 IF r> soko +! EXIT THEN
120: S" &." S" .&" r@ play-rule IF r> soko +! EXIT THEN
121: S" &* " S" .&$" r@ play-rule
122: IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
123: -1 moves +! rdrop ;
124:
125: 1 move: soko-right
126: -1 move: soko-left
127: /maze move: soko-down
128: /maze negate move: soko-up
129:
130: : print-help
131: ." Move soko '@' with h, j, k or l key (like vi)" cr
132: ." or with vt100 cursor keys." cr ;
133:
134: : play-loop ( -- )
135: BEGIN
136: rocks @ 0=
137: IF
138: level# @ 1+ level 0= IF EXIT THEN
139: THEN
140: .maze
141: key
142: CASE
143: [char] ? OF print-help false ENDOF
144:
145: [char] h OF soko-left false ENDOF
146: [char] j OF soko-down false ENDOF
147: [char] k OF soko-up false ENDOF
148: [char] l OF soko-right false ENDOF
149:
150: \ vt100 cursor keys should work too
151: 27 OF key [char] [ <> ENDOF
152: [char] D OF soko-left false ENDOF
153: [char] B OF soko-down false ENDOF
154: [char] A OF soko-up false ENDOF
155: [char] C OF soko-right false ENDOF
156:
157: [char] q OF true ENDOF
158: ENDCASE
159: UNTIL ;
160:
161: \ start game with "sokoban"
162:
163: : sokoban ( -- )
164: 1 level IF play-loop ." Game finished!" THEN ;
165:
166: 001 new-maze
167: m: #####
168: m: # #
169: m: #$ #
170: m: ### $##
171: m: # $ $ #
172: m: ### # ## # ######
173: m: # # ## ##### ..#
174: m: # $ $ ..#
175: m: ##### ### #@## ..#
176: m: # #########
177: m: #######
178: 002 new-maze
179: m: ############
180: m: #.. # ###
181: m: #.. # $ $ #
182: m: #.. #$#### #
183: m: #.. @ ## #
184: m: #.. # # $ ##
185: m: ###### ##$ $ #
186: m: # $ $ $ $ #
187: m: # # #
188: m: ############
189: 003 new-maze
190: m: ########
191: m: # @#
192: m: # $#$ ##
193: m: # $ $#
194: m: ##$ $ #
195: m: ######### $ # ###
196: m: #.... ## $ $ #
197: m: ##... $ $ #
198: m: #.... ##########
199: m: ########
200: 004 new-maze
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: m: # # ##
214: m: ###########
215: 005 new-maze
216: m: #####
217: m: # #####
218: m: # #$## #
219: m: # $ #
220: m: ######### ### #
221: m: #.... ## $ $###
222: m: #.... $ $$ ##
223: m: #.... ##$ $ @#
224: m: ######### $ ##
225: m: # $ $ #
226: m: ### ## #
227: m: # #
228: m: ######
229: 006 new-maze
230: m: ###### ###
231: m: #.. # ##@##
232: m: #.. ### #
233: m: #.. $$ #
234: m: #.. # # $ #
235: m: #..### # $ #
236: m: #### $ #$ #
237: m: # $# $ #
238: m: # $ $ #
239: m: # ## #
240: m: #########
241: 007 new-maze
242: m: #####
243: m: ####### ##
244: m: ## # @## $$ #
245: m: # $ #
246: m: # $ ### #
247: m: ### #####$###
248: m: # $ ### ..#
249: m: # $ $ $ ...#
250: m: # ###...#
251: m: # $$ # #...#
252: m: # ### #####
253: m: ####
254: 008 new-maze
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: m: #......#
270: m: ########
271: 009 new-maze
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: m: # #
285: m: ########
286: 010 new-maze
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: m: # #.#
302: m: ###############
303: 011 new-maze
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: m: #.....#
318: m: #######
319: 012 new-maze
320: m: ################
321: m: # #
322: m: # # ###### #
323: m: # # $ $ $ $# #
324: m: # # $@$ ## ##
325: m: # # $ $ $###...#
326: m: # # $ $ ##...#
327: m: # ###$$$ $ ##...#
328: m: # # ## ##...#
329: m: ##### ## ##...#
330: m: ##### ###
331: m: # #
332: m: #######
333: 013 new-maze
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: m: # ## ####
347: m: ###
348: 014 new-maze
349: m: #########
350: m: ## ## ######
351: m: ### # # ###
352: m: # $ #$ # # ... #
353: m: # # $#@$## # #.#. #
354: m: # # #$ # . . #
355: m: # $ $ # # #.#. #
356: m: # ## ##$ $ . . #
357: m: # $ # # #$#.#. #
358: m: ## $ $ $ $... #
359: m: #$ ###### ## #
360: m: # # ##########
361: m: ####
362: 015 new-maze
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: m: ######## #
378: m: ####
379: 016 new-maze
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: m: ###### #
395: m: #####
396: 017 new-maze
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: m: # #
411: m: ####
412: 018 new-maze
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: m: # #
426: m: ######
427: 019 new-maze
428: m: ###########
429: m: # . # #
430: m: # #. @ #
431: m: ##### ##..# ####
432: m: ## # ..### ###
433: m: # $ #... $ # $ #
434: m: # .. ## ## ## #
435: m: ####$##$# $ # # #
436: m: ## # #$ $$ # #
437: m: # $ # # # $## #
438: m: # #
439: m: # ########### #
440: m: #### ####
441: 020 new-maze
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: m: # # ## ....#
457: m: ###################
458: 021 new-maze
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: m: # ## ######
474: m: ########
475: 022 new-maze
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: m: ## #####
490: m: #####
491: 023 new-maze
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: m: # # #
507: m: ###################
508: 024 new-maze
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: m: ##. #### ##### #
522: m: #### #### #####
523: 025 new-maze
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: m: # @## # # #
539: m: ##############
540: 026 new-maze
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: m: # # # #
556: m: ########## #####
557: 027 new-maze
558: m: #######
559: m: # # #####
560: m: ## # #...###
561: m: # $# #... #
562: m: # $ #$$ ... #
563: m: # $# #... .#
564: m: # # $########
565: m: ##$ $ $ #
566: m: ## # $$ # #
567: m: ###### ##$$@#
568: m: # ##
569: m: ########
570: 028 new-maze
571: m: #################
572: m: #... # # ##
573: m: ##..... $## # #$ #
574: m: #......# $ # #
575: m: #......# # # # #
576: m: ######### $ $ $ #
577: m: # #$##$ ##$##
578: m: ## $ # $ #
579: m: # ## ### # ##$ #
580: m: # $ $$ $ $ #
581: m: # $ $##$ ######
582: m: ####### @ ##
583: m: ######
584: 029 new-maze
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: m: ###### #
599: m: #####
600: 030 new-maze
601: m: #####
602: m: # ##
603: m: # $ #########
604: m: ## # # ######
605: m: ## # $#$#@ # #
606: m: # # $ # $ #
607: m: # ### ######### ##
608: m: # ## ..*..... # ##
609: m: ## ## *.*..*.* # ##
610: m: # $########## ##$ #
611: m: # $ $ $ $ #
612: m: # # # # # #
613: m: ###################
614: 031 new-maze
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: m: ##### ######...##
628: m: ##### #####
629: 032 new-maze
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: m: #...#
645: m: #####
646: 033 new-maze
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: m: # #
661: m: ####
662: 034 new-maze
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: m: ###..## #
677: m: ############
678: 035 new-maze
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: m: # #####
693: m: ####
694: 036 new-maze
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: m: # # # #
710: m: ###### ######
711: 037 new-maze
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: m: #.........#
727: m: ###########
728: 038 new-maze
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: m: #####@#####
743: m: ###
744: 039 new-maze
745: m: ####
746: m: ####### @#
747: m: # $ #
748: m: # $## $#
749: m: ##$#...# #
750: m: # $... #
751: m: # #. .# ##
752: m: # # #$ #
753: m: #$ $ #
754: m: # #######
755: m: ####
756: 040 new-maze
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: m: ###### ###
772: m: #####
773: 041 new-maze
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: m: #.... #
789: m: #########
790: 042 new-maze
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: m: ## ##
805: m: ####
806: 043 new-maze
807: m: ########
808: m: #### ######
809: m: # ## $ $ @#
810: m: # ## ##$#$ $ $##
811: m: ### ......# $$ ##
812: m: # ......# # #
813: m: # # ......#$ $ #
814: m: # #$...... $$# $ #
815: m: # ### ###$ $ ##
816: m: ### $ $ $ $ #
817: m: # $ $ $ $ #
818: m: ###### ######
819: m: #####
820: 044 new-maze
821: m: #######
822: m: ##### # ####
823: m: # # $ #
824: m: #### #$$ ## ## #
825: m: ## # # ## ###
826: m: # ### $#$ $ $ #
827: m: #... # ## # #
828: m: #...# @ # ### ##
829: m: #...# ### $ $ #
830: m: ######## ## # #
831: m: #########
832: 045 new-maze
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: m: # #
847: m: #########
848: 046 new-maze
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: m: #.......#
864: m: #########
865: 047 new-maze
866: m: ####
867: m: ######### ##
868: m: ## $ $ #####
869: m: # ## ## ##...#
870: m: # #$$ $ $$#$##...#
871: m: # # @ # ...#
872: m: # $# ###$$ ...#
873: m: # $ $$ $ ##....#
874: m: ###$ #######
875: m: # #######
876: m: ####
877: 048 new-maze
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: m: # ##### #
893: m: #### ####
894: 049 new-maze
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: m: # ## #
909: m: #########
910: 050 new-maze
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: m: # # # ##
926: m: #### ######
927: 051 new-maze
928: m: #########
929: m: # #
930: m: # $ $#
931: m: #### #
932: m: # $ ##
933: m: #### $ #
934: m: #.. $ ## ####
935: m: #.. $## #
936: m: #.. $ #
937: m: #.###$### #@#
938: m: #.# # ###
939: m: ### #######
940: 052 new-maze
941: m: ####################
942: m: # ########## @#
943: m: # $# # ######
944: m: # #### # ###
945: m: ##### # ###
946: m: # $ # ###
947: m: # $#### # # #
948: m: # # # #..#$### # #
949: m: # # #$ #..# $ $$ #
950: m: # #..# # # #
951: m: # # #..# # # #
952: m: ####################
953: 053 new-maze
954: m: ####################
955: m: # ###
956: m: # $# $ ## $ ##
957: m: # $### # $$ ##
958: m: #.### $ $ ## ##
959: m: #...# # # #$ #
960: m: #..##$$#### $ # #
961: m: #...# $ ## ###
962: m: #...$ ### # # #
963: m: ##.. $# ## ##@ #
964: m: ###.# #
965: m: ####################
966: 054 new-maze
967: m: ####################
968: m: # # # # #@#
969: m: # $ $ $ # #
970: m: ## ###..## ### #
971: m: # #....#$# $### #
972: m: # $ #....# $ $ $ #
973: m: # #....# # # $ $ #
974: m: # ##..## #$# #
975: m: ##$## ## # #$##
976: m: # $ $ # # #
977: m: # # # # #
978: m: ####################
979: 055 new-maze
980: m: ####################
981: m: # @## # ##
982: m: # ## $ $ ##
983: m: # ###....# # # ###
984: m: # #....# # # $ #
985: m: ### #...# # #
986: m: ## ##.# $ $ #
987: m: ## $ $ ### # # ###
988: m: ## $ # # $ #
989: m: #### $ $# # # # $ #
990: m: #### # # ##
991: m: ####################
992: 056 new-maze
993: m: ####################
994: m: # # ## # @###
995: m: ## $ # $### #
996: m: ##$# $ ##$# $ $ #
997: m: # $# $ ###
998: m: # ## $ ### #....#
999: m: # # $# # # # #....##
1000: m: # $ $ # #....###
1001: m: ##$ ### $ #....####
1002: m: # # $ ######
1003: m: # # # ######
1004: m: ####################
1005: 057 new-maze
1006: m: ####################
1007: m: #@ ### # # #
1008: m: # # # # $ $ #
1009: m: ##### # $ $#$# #
1010: m: #.#..# ##$ $ #
1011: m: #..... $ # ##
1012: m: #..... ###$##$###
1013: m: #.#..# $ # #
1014: m: ##### # #$ $ #
1015: m: ##### # $ $ $ #
1016: m: ##### # # # # #
1017: m: ####################
1018: 058 new-maze
1019: m: ####################
1020: m: ##... ## # # #
1021: m: #.... $ ## #
1022: m: #....# # #$###$ #
1023: m: #...# # # #
1024: m: ##.# #$ # $## #
1025: m: # # # $ $ ### $ #
1026: m: # $ $ # # ## #
1027: m: ## # ## #$$# $# # #
1028: m: # # $ $ # ##
1029: m: # # # # @#
1030: m: ####################
1031: 059 new-maze
1032: m: ####################
1033: m: # # #@# ## #####
1034: m: # # # $ $ #####
1035: m: # # ###### $ ###
1036: m: # # #....# $$ #
1037: m: ##$##$##....# #
1038: m: # #....##$##$##
1039: m: # $$ #....# #
1040: m: # $ $ # # ### #
1041: m: ##### $ $ $ #
1042: m: ##### # # # ##
1043: m: ####################
1044: 060 new-maze
1045: m: ####################
1046: m: # ###..### #
1047: m: # $$ ###..### $@ #
1048: m: # # ##......# $ #
1049: m: # #......# $ #
1050: m: #### ###..######$ #
1051: m: # $$$ #..# # #
1052: m: # $# $ $ $$ #$ #
1053: m: # # ## $ ## # #
1054: m: # $ $ ## $ $ #
1055: m: # # ## ## # #
1056: m: ####################
1057: 061 new-maze
1058: m: ####################
1059: m: # # # # # # #
1060: m: # @# # ## $ $ ##
1061: m: #### # # # $ #
1062: m: # # ## #$ ## ## #
1063: m: # $ $ $ #
1064: m: #..###$$## $##$ ## #
1065: m: #..#.# # $ $ # #
1066: m: #....# $$ ##$ ####
1067: m: #....# ##### #
1068: m: #...### ## #
1069: m: ####################
1070: 062 new-maze
1071: m: ####################
1072: m: #....# # # #
1073: m: #....# # $ $ #
1074: m: #.... ## $# # $#$ #
1075: m: #...# $ $# $ #
1076: m: #..#### # $ $$ #
1077: m: # #### #### ###
1078: m: # # # #
1079: m: # ## # $ # $ $ #
1080: m: # ## $ ## $ $ #
1081: m: # @# # # #
1082: m: ####################
1083: 063 new-maze
1084: m: ####################
1085: m: #....### #
1086: m: #....##### # #$# ##
1087: m: #....### #$ $ #
1088: m: #....### $ #$$##
1089: m: ## #### $# #$ $ #
1090: m: ## #### $ $ # #
1091: m: #@ ####$###$## $ #
1092: m: ## # # $ #
1093: m: ## ### # $ ####
1094: m: ######## # # #
1095: m: ####################
1096: 064 new-maze
1097: m: ####################
1098: m: # # @#...###
1099: m: # # ##...##
1100: m: # # # ##$## ## ....#
1101: m: # $ # $$$ ....#
1102: m: ###$### $$ ### ##.#
1103: m: # $ # # ####
1104: m: # $ # ### # # #
1105: m: ## #$## $ $$ #
1106: m: # $ ## # # # #
1107: m: # # # # #
1108: m: ####################
1109: 065 new-maze
1110: m: ####################
1111: m: # # #...#@ #
1112: m: # # ....# #
1113: m: # $ # #....# #
1114: m: # ##$#### ##....# #
1115: m: # $ $ # #...# #
1116: m: # $$ # # # $$ #
1117: m: ### $$$# $$ $ #
1118: m: # $ # # # $# #
1119: m: # $# # $ #
1120: m: # # # # # #
1121: m: ####################
1122: 066 new-maze
1123: m: ####################
1124: m: #####@###.##...## #
1125: m: #####$ ..#...# #
1126: m: #### ......# $ #
1127: m: ### $ #.....## # ##
1128: m: ## $$# ##### $ $ #
1129: m: ## $# $ ## $$ #
1130: m: ## # # # $ $ #
1131: m: ## $$ ### #$## #
1132: m: ## $# $ $ $ ##
1133: m: ### # # ###
1134: m: ####################
1135: 067 new-maze
1136: m: ####################
1137: m: #@ # # #
1138: m: ## ### ## #### # ##
1139: m: # # # $$ #
1140: m: # # # # $ # $ ## ##
1141: m: # $ # #$$ # #
1142: m: # ### # ## ##
1143: m: #..#.# $ # $ # #
1144: m: #..#.# $ # ## $$ #
1145: m: #....## $$ $ # #
1146: m: #.....## # #
1147: m: ####################
1148: 068 new-maze
1149: m: ####################
1150: m: # # # # ##
1151: m: # $# $ $ ##...$ $ #
1152: m: # $ # ##....# $ #
1153: m: # ## $ ##....# $ #
1154: m: # $ #....## $ #
1155: m: # $## #...# #
1156: m: # $$$##$## ### ##
1157: m: # # # # # # #
1158: m: # $ # $ ## #
1159: m: # # #@ #
1160: m: ####################
1161: 069 new-maze
1162: m: ####################
1163: m: # # # # # # #
1164: m: # $ $ $ #
1165: m: ## # #$###$## ## #
1166: m: # $ $ # $ #
1167: m: # ###$##$# # $ #
1168: m: # # $ $ ###### $#
1169: m: # $ $$ $ #@#.#...#
1170: m: # # # # #.#...#
1171: m: # ########## #.....#
1172: m: # #.....#
1173: m: ####################
1174: 070 new-maze
1175: m: ####################
1176: m: # # # ## ##
1177: m: # $# $ # ## #
1178: m: # $ $ #..# $ #
1179: m: # $ $ #....# # ##
1180: m: # $# #......### $ #
1181: m: # # #....# #$ #
1182: m: # $ ####..# # #
1183: m: ## $ ## # # $ $##
1184: m: ### $ $#@$ $# #
1185: m: #### # # #
1186: m: ####################
1187: 071 new-maze
1188: m: ####################
1189: m: # ....# ####
1190: m: # .... #
1191: m: # # ########## #
1192: m: # #$ # ###..#
1193: m: # $ #$$### #..#
1194: m: # $ ### $ $ #..#
1195: m: # $ # $ $ # ##..#
1196: m: # # $$ # $ ## ##
1197: m: #@## $# $ $ ##
1198: m: ## ## # ###
1199: m: ####################
1200: 072 new-maze
1201: m: ####################
1202: m: # # #@ # #
1203: m: # $$ #$$# # # ## #
1204: m: # # $ $ #$$ # #
1205: m: ## # # # # # # #
1206: m: # ## # #
1207: m: # # $ # # # #
1208: m: # $ #$ # # $ #..#
1209: m: ##$ # #### #...#
1210: m: # $ #....#
1211: m: # # # #.....#
1212: m: ####################
1213: 073 new-maze
1214: m: ####################
1215: m: # # ##### #
1216: m: ## $ # #### $ #
1217: m: #### $$ #..# # #
1218: m: # $ $ ##..#### ##
1219: m: # $ ###.... $$ #
1220: m: # #$# ....# # $ #
1221: m: # # # $ ..###$# #
1222: m: # # $ #..# ## #
1223: m: # $# #### # $##
1224: m: # # # @# ##
1225: m: ####################
1226: 074 new-maze
1227: m: ####################
1228: m: # # # # #@#
1229: m: # $ $ # $ # #
1230: m: ##$# $### # $$# #
1231: m: # # #.### #$ $ #
1232: m: # #$#....# # ### #
1233: m: # $ #.....## # #
1234: m: ##$ #.#....#$$ $ #
1235: m: # ######..## # # #
1236: m: # $ $ ### #
1237: m: # # # # #
1238: m: ####################
1239: 075 new-maze
1240: m: ####################
1241: m: # # # # #@## # #
1242: m: # $ #
1243: m: # ##$# ##### $ # ##
1244: m: ## ##.....# # #
1245: m: ##$##$#.....###$#$ #
1246: m: # # ##.....# # ##
1247: m: # $ ##..## # #
1248: m: # $ # $ $ $$$ #
1249: m: ## $ $# # # $ #
1250: m: # ## # # #
1251: m: ####################
1252: 076 new-maze
1253: m: ###### #####
1254: m: # # # #
1255: m: # $ #### $ #
1256: m: # $ $ #
1257: m: # ###@###$ #
1258: m: ########## ###
1259: m: #.. ## #
1260: m: #.. ##$ #
1261: m: #.. ## $ #
1262: m: #.. ## $ #
1263: m: #.. $ $ #
1264: m: ### #########
1265: m: ####
1266: 077 new-maze
1267: m: ###########
1268: m: # #
1269: m: # $ $ #
1270: m: ###### # $ ##### #
1271: m: # ##### $ ##$#
1272: m: # $ $ #
1273: m: # ## ## #
1274: m: # ##@##### ## #
1275: m: # #### # ## ##
1276: m: #....# # $ #
1277: m: #....# # #
1278: m: ###### #######
1279: 078 new-maze
1280: m: #############
1281: m: # #
1282: m: # ### $$ #
1283: m: # # $ $ #
1284: m: # $####$######
1285: m: # $ ## #####
1286: m: # $$ $ ...#
1287: m: ### ## $$# ...#
1288: m: # ## # ...#
1289: m: # # ...#
1290: m: ###@#############
1291: m: ###
1292: 079 new-maze
1293: m: #################
1294: m: ###@## ...#
1295: m: # # ...#
1296: m: # $ # ...#
1297: m: # $$ # ...#
1298: m: ## $ ###$##########
1299: m: # ### $ #
1300: m: ## $ $ #
1301: m: # $ # $ #
1302: m: # $ # #
1303: m: # $ # #
1304: m: # # #
1305: m: ###########
1306: 080 new-maze
1307: m: #####
1308: m: ########## #
1309: m: # # #
1310: m: # $ $ $$ #
1311: m: # ##### ## $ #
1312: m: #$$ #$## $ #
1313: m: # ### # ##$ #
1314: m: ###### ### $ $ #
1315: m: #.... ## #
1316: m: #.... ######
1317: m: #.... #
1318: m: ###########@##
1319: m: ###
1320: 081 new-maze
1321: m: ######
1322: m: #### #
1323: m: # ## #
1324: m: # $ #
1325: m: ### #### ########
1326: m: # $ $ ## ...#
1327: m: # $$ $$ ...#
1328: m: # $ $## ...#
1329: m: ##@## ## ## ...#
1330: m: ### $ ########
1331: m: # $$ #
1332: m: # # #
1333: m: #########
1334: 082 new-maze
1335: m: ####### #########
1336: m: # # # ## #
1337: m: # ### # # $ #
1338: m: # # $ ### $ #
1339: m: # $$ ##$ #
1340: m: # #### ## #
1341: m: #@############ ##
1342: m: ###.. #####$ #
1343: m: #.. #### #
1344: m: #.. $$ #
1345: m: #.. #### $ #
1346: m: #.. # # #
1347: m: ######## #####
1348: 083 new-maze
1349: m: #######
1350: m: # ##########
1351: m: # # # ##
1352: m: # $ # $ $ #
1353: m: # $ # $ ## #
1354: m: # $$ ##$ $ #
1355: m: ## # ## #######
1356: m: ## # ## ...#
1357: m: # #$ ...#
1358: m: # $$ ...#
1359: m: # ##@# ...#
1360: m: ################
1361: 084 new-maze
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: m: # # # ##
1377: m: ##### ##########
1378: 085 new-maze
1379: m: ####################
1380: m: # # # #
1381: m: # $ ## ### ##
1382: m: ##### ## $ $ #
1383: m: ##..## # # $ # # #
1384: m: #.... $ ##$# ##
1385: m: #.... $##### #$##
1386: m: ##..# # # # $ #
1387: m: ###.# # $ $ # @#
1388: m: ## $ $ # # ####
1389: m: ## ###########
1390: m: ####################
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>