image of READY prompt

Wang2200.org

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