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: >maze off
32:
33: \ score information
34:
35: Variable rocks 0 rocks ! \ number of rocks left
36: Variable level# 0 level# ! \ Current level
37: Variable moves 0 moves ! \ number of moves
38: Variable score 0 score ! \ total number of scores
39:
40: : new-maze ( n -- addr ) \ add a new level
41: here mazes rot 1 ?DO @ LOOP !
42: 0 , 0 , here >maze ! 0 , ;
43: : count-$ ( addr u -- n ) 0 rot rot
44: over + swap ?DO I c@ [char] $ = - LOOP ;
45: : m: ( "string" -- ) \ add a level line (top first!)
46: -1 parse tuck 2dup count-$ >maze @ 1 cells - +!
47: here swap move dup allot
48: /maze swap - here over bl fill allot
49: >maze @ here over cell+ - swap ! ;
50:
51: : maze-field ( -- addr n )
52: maze dup cell+ swap @ chars ;
53:
54: : .score ( -- )
55: ." Level: " level# @ 2 .r ." Score: " score @ 4 .r
56: ." Moves: " moves @ 6 .r ." Rocks: " rocks @ 2 .r ;
57:
58: : .maze ( -- ) \ display maze
59: 0 0 at-xy .score
60: cr maze-field over + swap
61: DO I /maze type cr /maze chars +LOOP ;
62:
63: : find-soko ( -- n )
64: maze-field 0
65: DO dup I chars + c@ [char] @ =
66: IF drop I UNLOOP EXIT THEN
67: LOOP true abort" No player in field!" ;
68:
69: : level ( n -- flag ) \ finds level n
70: dup level# !
71: mazes swap 0
72: ?DO @ dup 0= IF drop false UNLOOP EXIT THEN LOOP
73: cell+ dup @ rocks !
74: cell+ dup @ cell+ maze swap chars move
75: find-soko soko ! true ;
76:
77: \ now the playing rules as replacement strings
78:
79: : 'soko ( -- addr ) \ gives player's address
80: maze cell+ soko @ chars + ;
81:
82: : apply-rule? ( addr u offset -- flag )
83: 'soko 2swap
84: \ offset soko-addr addr u
85: 0 DO
86: over c@ over c@ <>
87: IF drop 2drop false UNLOOP EXIT THEN
88: >r over chars + r> char+
89: LOOP 2drop drop true ;
90:
91: : apply-rule! ( addr u offset -- )
92: 'soko
93: 2swap
94: \ offset soko-addr addr u
95: 0 DO
96: count rot tuck c! rot tuck chars + rot
97: LOOP 2drop drop ;
98:
99: : play-rule ( addr1 u1 addr2 u2 offset -- flag )
100: >r 2swap r@ apply-rule?
101: IF r> apply-rule! true ELSE r> drop 2drop false THEN ;
102:
103: \ player may move up, down, left and right
104:
105: : move: ( offset -- )
106: Create ,
107: DOES> @ >r 1 moves +!
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 IF r> soko +! EXIT THEN
112: S" @* " S" &$" r@ play-rule
113: IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
114: S" @$." S" @*" r@ play-rule
115: IF r> soko +! -1 rocks +! 1 score +! 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 IF r> soko +! EXIT THEN
120: S" &* " S" .&$" r@ play-rule
121: IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
122: -1 moves +! r> drop ;
123:
124: 1 move: soko-right
125: -1 move: soko-left
126: /maze move: soko-down
127: /maze negate move: soko-up
128:
129: : print-help
130: ." Move soko '@' with h, j, k or l key (like vi)" cr
131: ." or with vt100 cursor keys." cr ;
132:
133: : play-loop ( -- )
134: BEGIN
135: rocks @ 0=
136: IF
137: level# @ 1+ level 0= IF EXIT THEN
138: THEN
139: .maze
140: key
141: CASE
142: [char] ? OF print-help false ENDOF
143:
144: [char] h OF soko-left false ENDOF
145: [char] j OF soko-down false ENDOF
146: [char] k OF soko-up false ENDOF
147: [char] l OF soko-right false ENDOF
148:
149: \ vt100 cursor keys should work too
150: 27 OF key [char] [ <> ENDOF
151: [char] D OF soko-left false ENDOF
152: [char] B OF soko-down false ENDOF
153: [char] A OF soko-up false ENDOF
154: [char] C OF soko-right false ENDOF
155:
156: [char] q OF true ENDOF
157: false swap ENDCASE
158: UNTIL ;
159:
160: \ start game with "sokoban"
161:
162: : sokoban ( -- )
163: page 1 level IF play-loop ." Game finished!" THEN ;
164:
165: 001 new-maze
166: m: #####
167: m: # #
168: m: #$ #
169: m: ### $##
170: m: # $ $ #
171: m: ### # ## # ######
172: m: # # ## ##### ..#
173: m: # $ $ ..#
174: m: ##### ### #@## ..#
175: m: # #########
176: m: #######
177: 002 new-maze
178: m: ############
179: m: #.. # ###
180: m: #.. # $ $ #
181: m: #.. #$#### #
182: m: #.. @ ## #
183: m: #.. # # $ ##
184: m: ###### ##$ $ #
185: m: # $ $ $ $ #
186: m: # # #
187: m: ############
188: 003 new-maze
189: m: ########
190: m: # @#
191: m: # $#$ ##
192: m: # $ $#
193: m: ##$ $ #
194: m: ######### $ # ###
195: m: #.... ## $ $ #
196: m: ##... $ $ #
197: m: #.... ##########
198: m: ########
199: 004 new-maze
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: m: ###########
214: 005 new-maze
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: m: ######
228: 006 new-maze
229: m: ###### ###
230: m: #.. # ##@##
231: m: #.. ### #
232: m: #.. $$ #
233: m: #.. # # $ #
234: m: #..### # $ #
235: m: #### $ #$ #
236: m: # $# $ #
237: m: # $ $ #
238: m: # ## #
239: m: #########
240: 007 new-maze
241: m: #####
242: m: ####### ##
243: m: ## # @## $$ #
244: m: # $ #
245: m: # $ ### #
246: m: ### #####$###
247: m: # $ ### ..#
248: m: # $ $ $ ...#
249: m: # ###...#
250: m: # $$ # #...#
251: m: # ### #####
252: m: ####
253: 008 new-maze
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: m: ########
270: 009 new-maze
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: m: ########
285: 010 new-maze
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: m: ###############
302: 011 new-maze
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: m: #######
318: 012 new-maze
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: m: #######
332: 013 new-maze
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: m: ###
347: 014 new-maze
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: m: ####
361: 015 new-maze
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: m: ####
378: 016 new-maze
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: m: #####
395: 017 new-maze
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: m: ####
411: 018 new-maze
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: m: ######
426: 019 new-maze
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: m: #### ####
440: 020 new-maze
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: m: ###################
457: 021 new-maze
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: m: ########
474: 022 new-maze
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: m: #####
490: 023 new-maze
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: m: ###################
507: 024 new-maze
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: m: #### #### #####
522: 025 new-maze
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: m: ##############
539: 026 new-maze
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: m: ########## #####
556: 027 new-maze
557: m: #######
558: m: # # #####
559: m: ## # #...###
560: m: # $# #... #
561: m: # $ #$$ ... #
562: m: # $# #... .#
563: m: # # $########
564: m: ##$ $ $ #
565: m: ## # $$ # #
566: m: ###### ##$$@#
567: m: # ##
568: m: ########
569: 028 new-maze
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: m: ######
583: 029 new-maze
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: m: #####
599: 030 new-maze
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: m: ###################
613: 031 new-maze
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: m: ##### #####
628: 032 new-maze
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: m: #####
645: 033 new-maze
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: m: ####
661: 034 new-maze
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: m: ############
677: 035 new-maze
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: m: ####
693: 036 new-maze
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: m: ###### ######
710: 037 new-maze
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: m: ###########
727: 038 new-maze
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: m: ###
743: 039 new-maze
744: m: ####
745: m: ####### @#
746: m: # $ #
747: m: # $## $#
748: m: ##$#...# #
749: m: # $... #
750: m: # #. .# ##
751: m: # # #$ #
752: m: #$ $ #
753: m: # #######
754: m: ####
755: 040 new-maze
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: m: #####
772: 041 new-maze
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: m: #########
789: 042 new-maze
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: m: ####
805: 043 new-maze
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: m: #####
819: 044 new-maze
820: m: #######
821: m: ##### # ####
822: m: # # $ #
823: m: #### #$$ ## ## #
824: m: ## # # ## ###
825: m: # ### $#$ $ $ #
826: m: #... # ## # #
827: m: #...# @ # ### ##
828: m: #...# ### $ $ #
829: m: ######## ## # #
830: m: #########
831: 045 new-maze
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: m: #########
847: 046 new-maze
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: m: #########
864: 047 new-maze
865: m: ####
866: m: ######### ##
867: m: ## $ $ #####
868: m: # ## ## ##...#
869: m: # #$$ $ $$#$##...#
870: m: # # @ # ...#
871: m: # $# ###$$ ...#
872: m: # $ $$ $ ##....#
873: m: ###$ #######
874: m: # #######
875: m: ####
876: 048 new-maze
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: m: #### ####
893: 049 new-maze
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: m: #########
909: 050 new-maze
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: m: #### ######
926: 051 new-maze
927: m: #########
928: m: # #
929: m: # $ $#
930: m: #### #
931: m: # $ ##
932: m: #### $ #
933: m: #.. $ ## ####
934: m: #.. $## #
935: m: #.. $ #
936: m: #.###$### #@#
937: m: #.# # ###
938: m: ### #######
939: 052 new-maze
940: m: ####################
941: m: # ########## @#
942: m: # $# # ######
943: m: # #### # ###
944: m: ##### # ###
945: m: # $ # ###
946: m: # $#### # # #
947: m: # # # #..#$### # #
948: m: # # #$ #..# $ $$ #
949: m: # #..# # # #
950: m: # # #..# # # #
951: m: ####################
952: 053 new-maze
953: m: ####################
954: m: # ###
955: m: # $# $ ## $ ##
956: m: # $### # $$ ##
957: m: #.### $ $ ## ##
958: m: #...# # # #$ #
959: m: #..##$$#### $ # #
960: m: #...# $ ## ###
961: m: #...$ ### # # #
962: m: ##.. $# ## ##@ #
963: m: ###.# #
964: m: ####################
965: 054 new-maze
966: m: ####################
967: m: # # # # #@#
968: m: # $ $ $ # #
969: m: ## ###..## ### #
970: m: # #....#$# $### #
971: m: # $ #....# $ $ $ #
972: m: # #....# # # $ $ #
973: m: # ##..## #$# #
974: m: ##$## ## # #$##
975: m: # $ $ # # #
976: m: # # # # #
977: m: ####################
978: 055 new-maze
979: m: ####################
980: m: # @## # ##
981: m: # ## $ $ ##
982: m: # ###....# # # ###
983: m: # #....# # # $ #
984: m: ### #...# # #
985: m: ## ##.# $ $ #
986: m: ## $ $ ### # # ###
987: m: ## $ # # $ #
988: m: #### $ $# # # # $ #
989: m: #### # # ##
990: m: ####################
991: 056 new-maze
992: m: ####################
993: m: # # ## # @###
994: m: ## $ # $### #
995: m: ##$# $ ##$# $ $ #
996: m: # $# $ ###
997: m: # ## $ ### #....#
998: m: # # $# # # # #....##
999: m: # $ $ # #....###
1000: m: ##$ ### $ #....####
1001: m: # # $ ######
1002: m: # # # ######
1003: m: ####################
1004: 057 new-maze
1005: m: ####################
1006: m: #@ ### # # #
1007: m: # # # # $ $ #
1008: m: ##### # $ $#$# #
1009: m: #.#..# ##$ $ #
1010: m: #..... $ # ##
1011: m: #..... ###$##$###
1012: m: #.#..# $ # #
1013: m: ##### # #$ $ #
1014: m: ##### # $ $ $ #
1015: m: ##### # # # # #
1016: m: ####################
1017: 058 new-maze
1018: m: ####################
1019: m: ##... ## # # #
1020: m: #.... $ ## #
1021: m: #....# # #$###$ #
1022: m: #...# # # #
1023: m: ##.# #$ # $## #
1024: m: # # # $ $ ### $ #
1025: m: # $ $ # # ## #
1026: m: ## # ## #$$# $# # #
1027: m: # # $ $ # ##
1028: m: # # # # @#
1029: m: ####################
1030: 059 new-maze
1031: m: ####################
1032: m: # # #@# ## #####
1033: m: # # # $ $ #####
1034: m: # # ###### $ ###
1035: m: # # #....# $$ #
1036: m: ##$##$##....# #
1037: m: # #....##$##$##
1038: m: # $$ #....# #
1039: m: # $ $ # # ### #
1040: m: ##### $ $ $ #
1041: m: ##### # # # ##
1042: m: ####################
1043: 060 new-maze
1044: m: ####################
1045: m: # ###..### #
1046: m: # $$ ###..### $@ #
1047: m: # # ##......# $ #
1048: m: # #......# $ #
1049: m: #### ###..######$ #
1050: m: # $$$ #..# # #
1051: m: # $# $ $ $$ #$ #
1052: m: # # ## $ ## # #
1053: m: # $ $ ## $ $ #
1054: m: # # ## ## # #
1055: m: ####################
1056: 061 new-maze
1057: m: ####################
1058: m: # # # # # # #
1059: m: # @# # ## $ $ ##
1060: m: #### # # # $ #
1061: m: # # ## #$ ## ## #
1062: m: # $ $ $ #
1063: m: #..###$$## $##$ ## #
1064: m: #..#.# # $ $ # #
1065: m: #....# $$ ##$ ####
1066: m: #....# ##### #
1067: m: #...### ## #
1068: m: ####################
1069: 062 new-maze
1070: m: ####################
1071: m: #....# # # #
1072: m: #....# # $ $ #
1073: m: #.... ## $# # $#$ #
1074: m: #...# $ $# $ #
1075: m: #..#### # $ $$ #
1076: m: # #### #### ###
1077: m: # # # #
1078: m: # ## # $ # $ $ #
1079: m: # ## $ ## $ $ #
1080: m: # @# # # #
1081: m: ####################
1082: 063 new-maze
1083: m: ####################
1084: m: #....### #
1085: m: #....##### # #$# ##
1086: m: #....### #$ $ #
1087: m: #....### $ #$$##
1088: m: ## #### $# #$ $ #
1089: m: ## #### $ $ # #
1090: m: #@ ####$###$## $ #
1091: m: ## # # $ #
1092: m: ## ### # $ ####
1093: m: ######## # # #
1094: m: ####################
1095: 064 new-maze
1096: m: ####################
1097: m: # # @#...###
1098: m: # # ##...##
1099: m: # # # ##$## ## ....#
1100: m: # $ # $$$ ....#
1101: m: ###$### $$ ### ##.#
1102: m: # $ # # ####
1103: m: # $ # ### # # #
1104: m: ## #$## $ $$ #
1105: m: # $ ## # # # #
1106: m: # # # # #
1107: m: ####################
1108: 065 new-maze
1109: m: ####################
1110: m: # # #...#@ #
1111: m: # # ....# #
1112: m: # $ # #....# #
1113: m: # ##$#### ##....# #
1114: m: # $ $ # #...# #
1115: m: # $$ # # # $$ #
1116: m: ### $$$# $$ $ #
1117: m: # $ # # # $# #
1118: m: # $# # $ #
1119: m: # # # # # #
1120: m: ####################
1121: 066 new-maze
1122: m: ####################
1123: m: #####@###.##...## #
1124: m: #####$ ..#...# #
1125: m: #### ......# $ #
1126: m: ### $ #.....## # ##
1127: m: ## $$# ##### $ $ #
1128: m: ## $# $ ## $$ #
1129: m: ## # # # $ $ #
1130: m: ## $$ ### #$## #
1131: m: ## $# $ $ $ ##
1132: m: ### # # ###
1133: m: ####################
1134: 067 new-maze
1135: m: ####################
1136: m: #@ # # #
1137: m: ## ### ## #### # ##
1138: m: # # # $$ #
1139: m: # # # # $ # $ ## ##
1140: m: # $ # #$$ # #
1141: m: # ### # ## ##
1142: m: #..#.# $ # $ # #
1143: m: #..#.# $ # ## $$ #
1144: m: #....## $$ $ # #
1145: m: #.....## # #
1146: m: ####################
1147: 068 new-maze
1148: m: ####################
1149: m: # # # # ##
1150: m: # $# $ $ ##...$ $ #
1151: m: # $ # ##....# $ #
1152: m: # ## $ ##....# $ #
1153: m: # $ #....## $ #
1154: m: # $## #...# #
1155: m: # $$$##$## ### ##
1156: m: # # # # # # #
1157: m: # $ # $ ## #
1158: m: # # #@ #
1159: m: ####################
1160: 069 new-maze
1161: m: ####################
1162: m: # # # # # # #
1163: m: # $ $ $ #
1164: m: ## # #$###$## ## #
1165: m: # $ $ # $ #
1166: m: # ###$##$# # $ #
1167: m: # # $ $ ###### $#
1168: m: # $ $$ $ #@#.#...#
1169: m: # # # # #.#...#
1170: m: # ########## #.....#
1171: m: # #.....#
1172: m: ####################
1173: 070 new-maze
1174: m: ####################
1175: m: # # # ## ##
1176: m: # $# $ # ## #
1177: m: # $ $ #..# $ #
1178: m: # $ $ #....# # ##
1179: m: # $# #......### $ #
1180: m: # # #....# #$ #
1181: m: # $ ####..# # #
1182: m: ## $ ## # # $ $##
1183: m: ### $ $#@$ $# #
1184: m: #### # # #
1185: m: ####################
1186: 071 new-maze
1187: m: ####################
1188: m: # ....# ####
1189: m: # .... #
1190: m: # # ########## #
1191: m: # #$ # ###..#
1192: m: # $ #$$### #..#
1193: m: # $ ### $ $ #..#
1194: m: # $ # $ $ # ##..#
1195: m: # # $$ # $ ## ##
1196: m: #@## $# $ $ ##
1197: m: ## ## # ###
1198: m: ####################
1199: 072 new-maze
1200: m: ####################
1201: m: # # #@ # #
1202: m: # $$ #$$# # # ## #
1203: m: # # $ $ #$$ # #
1204: m: ## # # # # # # #
1205: m: # ## # #
1206: m: # # $ # # # #
1207: m: # $ #$ # # $ #..#
1208: m: ##$ # #### #...#
1209: m: # $ #....#
1210: m: # # # #.....#
1211: m: ####################
1212: 073 new-maze
1213: m: ####################
1214: m: # # ##### #
1215: m: ## $ # #### $ #
1216: m: #### $$ #..# # #
1217: m: # $ $ ##..#### ##
1218: m: # $ ###.... $$ #
1219: m: # #$# ....# # $ #
1220: m: # # # $ ..###$# #
1221: m: # # $ #..# ## #
1222: m: # $# #### # $##
1223: m: # # # @# ##
1224: m: ####################
1225: 074 new-maze
1226: m: ####################
1227: m: # # # # #@#
1228: m: # $ $ # $ # #
1229: m: ##$# $### # $$# #
1230: m: # # #.### #$ $ #
1231: m: # #$#....# # ### #
1232: m: # $ #.....## # #
1233: m: ##$ #.#....#$$ $ #
1234: m: # ######..## # # #
1235: m: # $ $ ### #
1236: m: # # # # #
1237: m: ####################
1238: 075 new-maze
1239: m: ####################
1240: m: # # # # #@## # #
1241: m: # $ #
1242: m: # ##$# ##### $ # ##
1243: m: ## ##.....# # #
1244: m: ##$##$#.....###$#$ #
1245: m: # # ##.....# # ##
1246: m: # $ ##..## # #
1247: m: # $ # $ $ $$$ #
1248: m: ## $ $# # # $ #
1249: m: # ## # # #
1250: m: ####################
1251: 076 new-maze
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: m: ####
1265: 077 new-maze
1266: m: ###########
1267: m: # #
1268: m: # $ $ #
1269: m: ###### # $ ##### #
1270: m: # ##### $ ##$#
1271: m: # $ $ #
1272: m: # ## ## #
1273: m: # ##@##### ## #
1274: m: # #### # ## ##
1275: m: #....# # $ #
1276: m: #....# # #
1277: m: ###### #######
1278: 078 new-maze
1279: m: #############
1280: m: # #
1281: m: # ### $$ #
1282: m: # # $ $ #
1283: m: # $####$######
1284: m: # $ ## #####
1285: m: # $$ $ ...#
1286: m: ### ## $$# ...#
1287: m: # ## # ...#
1288: m: # # ...#
1289: m: ###@#############
1290: m: ###
1291: 079 new-maze
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: m: ###########
1305: 080 new-maze
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: m: ###
1319: 081 new-maze
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: m: #########
1333: 082 new-maze
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: m: ######## #####
1347: 083 new-maze
1348: m: #######
1349: m: # ##########
1350: m: # # # ##
1351: m: # $ # $ $ #
1352: m: # $ # $ ## #
1353: m: # $$ ##$ $ #
1354: m: ## # ## #######
1355: m: ## # ## ...#
1356: m: # #$ ...#
1357: m: # $$ ...#
1358: m: # ##@# ...#
1359: m: ################
1360: 084 new-maze
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: m: ##### ##########
1377: 085 new-maze
1378: m: ####################
1379: m: # # # #
1380: m: # $ ## ### ##
1381: m: ##### ## $ $ #
1382: m: ##..## # # $ # # #
1383: m: #.... $ ##$# ##
1384: m: #.... $##### #$##
1385: m: ##..# # # # $ #
1386: m: ###.# # $ $ # @#
1387: m: ## $ $ # # ####
1388: m: ## ###########
1389: m: ####################
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>