1 'Club 100 Library - 415/939-1246 BBS 937-5039 NEWSLETTER, 932-8856 VOICE 5 ' *** 3d Maze. Have Fun!! 10 DEFINTA-Z:E=15:K=111:T$=LEFT$(TIME$,2)+MID$(TIME$,4,2)+RIGHT$(TIME$,2) 30 FORI=-902TO-896:POKEI,VAL(MID$(T$,I+903,1)):NEXT 60 GOSUB3000 70 HE=8:CX=0:CY=MY:Q=0:CLS:GOSUB1000:GOSUB5000 200 A$=INKEY$:IFA$=""THEN200 210 A=ASC(A$):IFA<3ORA=6ORA=20OR(A>27ANDA<32)THEN230ELSE200 230 IFA<21THENFL=1 270 IFA=28ORA=6THEND=HE*8MODE 280 IFA=29ORA=1THEND=HE*2MODE 290 IFA=30ORA=20THEND=HE*1MODE 300 IFA=31ORA=2THEND=HE*4MODE 400 IFFLTHENHE=D:GOTO700 410 IFM(CX,CY)ANDDTHENBEEP:GOTO200 420 X=(D=2)-(D=8):Y=(D=1)-(D=4):GOSUB5500:HE=D 480 IFINT(M(CX,CY)/16)=HE*4MODETHENML=ML-1:M(CX,CY)=M(CX,CY)ANDE 500 CX=CX+X:CY=CY+Y:Q=Q+1:IFCX<0 OR CX>MX OR CY<0 OR CY>MYTHEN700 530 IF(M(CX,CY)AND240)=0THENM(CX,CY)=M(CX,CY)OR(HE*16):ML=ML+1 700 GOSUB1000:GOSUB5000:FL=0:GOTO200 1000 FORI=0TO7:PRINT@I*40,SPACE$(22);:NEXT 1030 LINE(0,0)-(127,63),1,B:RESTORE 1100 FORZD=0TO4:READH,J,L,M,R,P,V,B:GOSUB2000:IFZTHENRETURN 1200 :NEXT 1600 ZD=5:GOSUB2000:LINE(55,27)-(71,35):LINE(55,35)-(71,27):RETURN 2000 X=CX+ZD*((HE=2)-(HE=8)):Y=CY+ZD*((HE=1)-(HE=4)):IFX<0 OR X>MX OR Y<0 OR Y>MYTHEN2190 2020 RM=M(X,Y)ANDE:ZL=HE*2MODE:ZF=HE:ZR=HE*8MODE:IFZD=5THENRETURN 2050 F=H:G=J:IFRMANDZLTHENF=L:G=M 2060 LINE(R,F)-(P,H):LINE-(P,J):LINE-(R,G):F=H:G=J:IFRMANDZRTHENF=L:G=M 2080 LINE(V,F)-(B,H):LINE-(B,J):LINE-(V,G):Z=0:IFRMANDZFTHENLINE(P,H)-(B,J),1,B:Z=1 2100 RETURN 2190 RM=E:IFZD=0THEN9000 2210 Z=1:IFZD=1THENLINE(E,7)-(K,55),1,BF:RETURN 2220 C=4*ZD:LINE(E+C+C,7+C)-(K-C-C,55-C),1,BF:RETURN 3000 CLS:GOSUB8000:CLS 3030 PRINT@40,"Size of maze:X";:INPUTMX:MX=INT(MX-1):PRINT@60,"Y";:INPUTMY:MY=INT(MY-1) 3070 IFMY>14ORMX>25THENPRINT"Max. X is 26, Max. Y is 15":GOTO3030 3080 IFMX<1ORMY<1THENPRINT"Size must be greater than one":GOTO3030 3100 DIMM(MX,MY):FORY=0TOMY:FORX=0TOMX:M(X,Y)=E:NEXT:NEXT 3160 CX=0:CY=MY:CLS:PRINT@54,"Building Maze":ML=0:DIMD(4):N=(MX+1)*(MY+1):N9=1 3400 D=0 3410 PRINT@99,N-N9; 3420 IFCY>0THENIFM(CX,CY-1)=ETHEND=D+1:D(D)=1 3430 IFCX>0THENIFM(CX-1,CY)=ETHEND=D+1:D(D)=2 3440 IFCYMXTHENCY=DR-MX-1:M(MX,CY)=M(MX,CY)-8ELSECX=DR:M(CX,0)=M(CX,0)-1 3720 RETURN 4000 CX=CX+1:IFCX>MXTHENCX=0:CY=CY+1 4020 IFCY>MYTHENCY=0 4030 IFM(CX,CY)=ETHEN4000ELSERETURN 5000 Y1=CY:Y2=CY:X1=CX:X2=CX:IFZD=5THENZD=4 5030 IFHE=1THENY1=Y1-ZD:IFY1<0THENY1=0 5040 IFHE=2THENX1=X1-ZD:IFX1<0THENX1=0 5050 IFHE=4THENY2=Y2+ZD:IFY2>MYTHENY2=MY 5060 IFHE=8THENX2=X2+ZD:IFX2>MXTHENX2=MX 5100 FORUY=Y1TOY2:VY=3+UY*4:FORUX=X1TOX2 5130 VX=132+UX*4:FORI=0TO3:VD=2^I:IFVDANDM(UX,UY)THENPRINT"";ELSEGOTO5300 5200 LINE(VX-(I=3)*4,VY-(I=2)*4)-(VX-(I<>1)*4,VY-(I<>0)*4) 5300 NEXT:NEXT:NEXT 5400 VX=132+CX*4:VY=3+CY*4:LINE(VX+1,VY+1)-(VX+3,VY+3),0,B 5420 C=(HE=1)OR(HE=4):LINE(VX+1-2*(HE=2),VY+1-2*(HE=1))-(VX+3+2*(HE=8),VY+3+2*(HE=4)):LINE(VX+1-C,VY+2+C)-(VX+3+C,VY+2-C) 5460 RETURN 5500 VX=132+CX*4:VY=3+CY*4:LINE(VX+1,VY+1)-(VX+3,VY+3),0,B:RETURN 8000 INPUT"Would you like instructions";A$:IFLEFT$(A$,1)<>"Y"ANDLEFT$(A$,1)<>"y"THENRETURNELSECLS 8020 R$=CHR$(27):PRINT@14,R$;"pMAZ";R$;"qing":PRINT@45,"by Jim Straus ":PRINT" recoded by Alan Stein" 8060 PRINT@122,"The object of the game is to find yourway out of a maze. The left side of the" 8080 PRINT"screen is your view inside the maze. The right side is where you have been." 8100 PRINT@288,R$;"pPress any key to continue";R$;"q"; 8110 IFINKEY$=""THEN8110 8200 CLS:PRINT"The maze can be anywhere from 2 by 2 to 26 by 15 units in size. Use the arrow keys to move, and the"; 8270 PRINT" shift+arrow keys to turn in place.":PRINT@216,"Good Luck!" 8310 PRINT@288,R$;"pPress any key to continue";R$;"q";:IFINKEY$=""THEN8310 8500 RETURN 9000 FORI=0TO7:PRINT@I*40,SPACE$(22);:NEXT 9030 ML=ML+1:IFML=QTHENPRINT@05,"You Win!!!"ELSEPRINT@0,"You Had";Q-ML;"Extra Moves" 9032 IF Q-ML>ML THEN SC=Q-ML-ML 9034 IF Q-ML