home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.whtech.com
/
ftp.whtech.com.tar
/
ftp.whtech.com
/
club100
/
gam
/
maze.ba
< prev
next >
Wrap
Text File
|
2006-10-19
|
5KB
|
89 lines
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 IFCY<MYTHENIFM(CX,CY+1)=ETHEND=D+1:D(D)=4
3450 IFCX<MXTHENIFM(CX+1,CY)=ETHEND=D+1:D(D)=8
3460 IFD=0THENGOSUB4000:GOTO3400
3470 DR=D(INT(RND(1)*D)+1):X=(DR=2)-(DR=8):Y=(DR=1)-(DR=4)
3520 M(CX,CY)=M(CX,CY)-DR:M(CX+X,CY+Y)=M(CX+X,CY+Y)-(DR*4MODE)
3540 CX=CX+X:CY=CY+Y:N9=N9+1:IFN9<NTHEN3400
3700 DR=INT(RND(1)*(MX+1+MY+1)):IFDR>MXTHENCY=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<ML THEN SC=Q-ML+ML*ML
9036 IF ML=SC THEN SC=SC*SC*SC
9050 PRINT@80,"Best Run is";ML;"Moves":PRINT@160,"Your Score is ";SC:Y1=0:Y2=MY:X1=0:X2=MX
9060 GOSUB5100
9900 PRINT@240,"Again";:INPUTA$:IFLEFT$(A$,1)="N"ORLEFT$(A$,1)="n"THENMENUELSERUN
9950 DATA7,55,0,63,0,15,127,111,15,47,7,55,15,31,111,95,19,43,15,47,31,39,95,87,23,39
9960 DATA19,43,39,47,87,79,27,35,23,39,47,55,79,71