Listing of file='MAZE' on disk='vmedia/games-droz00.wvd.zip'
# Sector 306, program filename = 'MAZE' 1000 REM *** AUTOMAZE *** MAZE DEMO 1010 REM << VARIABLES >> 1020 DIM S(209),T(209),D(4) 1030 DIM S$(23,79)1,M$(11,19)1,H$(11,19)1,V$(11,19)1 1040 DIM W$10,K$1,K0$1,K1$1,K2$1,O$1 1050 DIM W$(11,19)1,T$(11,19)1,N$(11,19) 1060 DIM D$1,D2$7,D4$13,D6$5,D8$8 1070 D2$=HEX(080A3A080A8B08) 1080 D4$=HEX(08082E08082E08082E08088B08) 1090 D6$=HEX(2E2E2E8B08) 1100 D8$=HEX(3A080C3A080C8B08) 1110 GOTO 1970 1120 REM << SUBROUTINES >> 1130 DEFFN'210(X0,Y0,Z0) 1140 IF M$(X0,Y0)=" "THEN 1170 1150 IF O$="^"THEN 1210 1160 IF M$(X0,Y0)=K$THEN 1210 1170 I=2*X 1180 J=4*Y-1 1190 D=D+1 1200 D(D)=Z0 1210 RETURN 1220 DEFFN'200(X,Y) 1230 K$=M$(X,Y) 1240 K0$="^" 1250 D=0 1260 IF X=11THEN 1280 1270 GOSUB '210(X+1,Y,1) 1280 IF Y=1THEN 1300 1290 GOSUB '210(X,Y-1,2) 1300 IF Y=19THEN 1320 1310 GOSUB '210(X,Y+1,3) 1320 IF X=1THEN 1340 1330 GOSUB '210(X-1,Y,4) 1340 IF D=0THEN 1590 1350 ON D(RND(1)*D+1)GOTO 1360,1400,1440,1480 1360 V$(X,Y)="^" 1370 S$(I+1,J-1),S$(I+1,J),S$(I+1,J+1)=" " 1380 X=X+1 1390 GOTO 1510 1400 H$(X,Y-1)="^" 1410 S$(I,J-2)=" " 1420 Y=Y-1 1430 GOTO 1510 1440 H$(X,Y)="^" 1450 S$(I,J+2)=" " 1460 Y=Y+1 1470 GOTO 1510 1480 V$(X-1,Y)="^" 1490 S$(I-1,J-1),S$(I-1,J),S$(I-1,J+1)=" " 1500 X=X-1 1510 IF M$(X,Y)=" "THEN 1530 1520 O$="^" 1530 M$(X,Y)=K$ 1540 S=S+1 1550 PRINT HEX(010A0A0A0A0A0A0A0A0A0A);TAB(19);S;"CELLS OUT OF 208 HAVE BEEN G ENERATED" 1560 S(S)=X 1570 T(S)=Y 1580 K0$=" " 1590 RETURN 1600 DEFFN'220(X,Y) 1610 I=2*X 1620 J=4*Y-1 1630 IF X<>1THEN 1650 1640 S$(I-1,J-1),S$(I-1,J),S$(I-1,J+1)=" " 1650 IF X<>11THEN 1670 1660 S$(I+1,J-1),S$(I+1,J),S$(I+1,J+1)=" " 1670 IF Y<>1THEN 1690 1680 S$(I,J-2)=" " 1690 IF Y<>19THEN 1710 1700 S$(I,J+2)=" " 1710 RETURN 1720 DEFFN'120 1725 FOR O=1TO 999 : NEXT O 1730 P=P+1 1740 $GIO/F05(A000,W$)D$ 1750 $GIO/F05(A000,W$)D2$ 1760 D$=":" 1770 RETURN 1780 DEFFN'140 1785 FOR O=1TO 999 : NEXT O 1790 Q=Q-1 1800 $GIO/F05(A000,W$)D$ 1810 $GIO/F05(A000,W$)D4$ 1820 D$="." 1830 RETURN 1840 DEFFN'160 1845 FOR O=1TO 999 : NEXT O 1850 Q=Q+1 1860 $GIO/F05(A000,W$)D$ 1870 $GIO/F05(A000,W$)D6$ 1880 D$="." 1890 RETURN 1900 DEFFN'180 1905 FOR O=1TO 999 : NEXT O 1910 P=P-1 1920 $GIO/F05(A000,W$)D8$ 1930 D$="." 1940 RETURN 1950 REM << MAIN LINE >> 1960 REM INITIALIZE DISPLAY MATRIX 1970 S$(1,1),S$(1,5)=HEX(23) 1980 S$(1,2),S$(1,3),S$(1,4)=HEX(3D) 1990 S$(2,1),S$(2,5)=HEX(8C) 2000 MAT COPY S$()<2,72>TO S$()<6,72> 2010 MAT COPY S$()<81,72>TO S$()<85,72> 2020 S$(1,78),S$(2,78)=HEX(0D) 2030 S$(1,79),S$(2,79)=HEX(0A) 2040 MAT COPY S$()<1,1659>TO S$()<159,1659> 2050 REM INITIALIZE MODEL STORAGE 2060 INIT(" ")M$(),H$(),V$() 2070 S,T=0 2080 O$,K1$,K2$=" " 2090 REM CANCEL VISUAL NOISE 2100 PRINT HEX(03060A0A0A0A0A0A0A0A);TAB(32);"GENERATING MAZE" 2110 REM SELECT STARTING CELL 2120 A1,X1=INT(RND(1)*11)+1 2130 B1,Y1=1 2140 M$(X1,Y1)="1" 2150 GOSUB '220(X1,Y1) 2160 S$(I,J)=HEX(8B) 2170 REM SELECT GOAL CELL 2180 A2,X2=INT(RND(1)*11)+1 2190 B2,Y2=19 2200 M$(X2,Y2)="2" 2210 GOSUB '220(X2,Y2) 2220 S$(I,J-1)=HEX(84) 2230 S$(I,J)=HEX(81) 2240 S$(I,J+1)=HEX(5F) 2250 REM GENERATE MAZE 2260 IF K1$<>" "THEN 2400 2270 GOSUB '200(X1,Y1) 2280 IF K0$<>" "THEN 2320 2290 X1=X 2300 Y1=Y 2310 GOTO 2410 2320 IF S=208THEN 2380 2330 T=T+1 2340 PRINT HEX(010A0A0A0A0A0A0A0A0A0A0A0A);TAB(20);T;"CELLS OUT OF";S;"HAVE BE EN EXAMINED" 2350 X1=S(T) 2360 Y1=T(T) 2370 GOTO 2270 2380 K1$="^" 2390 GOTO 2410 2400 IF K2$<>" "THEN 2590 2410 IF K2$<>" "THEN 2550 2420 GOSUB '200(X2,Y2) 2430 IF K0$<>" "THEN 2470 2440 X2=X 2450 Y2=Y 2460 GOTO 2260 2470 IF S=208THEN 2530 2480 T=T+1 2490 PRINT HEX(010A0A0A0A0A0A0A0A0A0A0A0A);TAB(20);T;"CELLS OUT OF";S;"HAVE BE EN EXAMINED" 2500 X2=S(T) 2510 Y2=T(T) 2520 GOTO 2420 2530 K2$="^" 2540 GOTO 2260 2550 IF K1$<>" "THEN 2590 2560 GOTO 2260 2570 REM MAZE IS GENERATED 2580 REM NOW FIND YOUR WAY THROUGH IT 2590 $GIO/F05(4001A000,W$)S$() 2600 MAT COPY H$()TO W$() 2610 MAT COPY V$()TO T$() 2620 D$=":" 2630 P0=A2 2640 Q0=B2 2650 P=A1 2660 Q=B1 2670 M0=0 2680 $GIO/F05(4001,W$) 2690 FOR I=1TO 2*P-1 2700 $GIO/F05(400A,W$) 2710 NEXT I 2720 FOR I=1TO 4*Q-2 2730 $GIO/F05(4009,W$) 2740 NEXT I 2750 INIT(" ")N$() 2760 S=0 2770 S=S+1 2780 N$(P,Q)="^" 2790 S(S)=0 2800 S(S)=S(S)+1 2810 IF S(S)>4THEN 3020 2820 ON S(S)GOTO 2830,2870,2910,2960 2830 IF W$(P,Q)=" "THEN 3010 2840 IF N$(P,Q+1)="^"THEN 3010 2850 GOSUB '160 2860 GOTO 3130 2870 IF T$(P,Q)=" "THEN 3010 2880 IF N$(P+1,Q)="^"THEN 3010 2890 GOSUB '120 2900 GOTO 3130 2910 IF P=1THEN 3010 2920 IF T$(P-1,Q)=" "THEN 3010 2930 IF N$(P-1,Q)="^"THEN 3010 2940 GOSUB '180 2950 GOTO 3130 2960 IF Q=1THEN 3010 2970 IF W$(P,Q-1)=" "THEN 3010 2980 IF N$(P,Q-1)="^"THEN 3010 2990 GOSUB '140 3000 GOTO 3130 3010 GOTO 2800 3020 N$(P,Q)=" " 3030 S=S-1 3040 ON S(S)GOTO 3050,3070,3090,3110 3050 GOSUB '140 3060 GOTO 2800 3070 GOSUB '180 3080 GOTO 2800 3090 GOSUB '120 3100 GOTO 2800 3110 GOSUB '160 3120 GOTO 2800 3130 M0=M0+1 3140 IF P<>P0THEN 2770 3150 IF Q<>Q0THEN 2770 3160 PRINT HEX(010C);"PROBLEM SOLVED IN";M0;"MOVES AGAINST BEST POSSIBLE";S;"M OVES";TAB(78);HEX(0C) 3170 FOR O=1TO 99999 : NEXT O 3180 GOTO 1970