home *** CD-ROM | disk | FTP | other *** search
/ ftp.whtech.com / ftp.whtech.com.tar / ftp.whtech.com / club100 / gam / maze.ba < prev    next >
Text File  |  2006-10-19  |  5KB  |  89 lines

  1. 1 'Club 100 Library - 415/939-1246 BBS     937-5039 NEWSLETTER, 932-8856 VOICE
  2. 5 ' *** 3d Maze. Have Fun!!
  3. 10 DEFINTA-Z:E=15:K=111:T$=LEFT$(TIME$,2)+MID$(TIME$,4,2)+RIGHT$(TIME$,2)
  4. 30 FORI=-902TO-896:POKEI,VAL(MID$(T$,I+903,1)):NEXT
  5. 60 GOSUB3000
  6. 70 HE=8:CX=0:CY=MY:Q=0:CLS:GOSUB1000:GOSUB5000
  7. 200 A$=INKEY$:IFA$=""THEN200
  8. 210 A=ASC(A$):IFA<3ORA=6ORA=20OR(A>27ANDA<32)THEN230ELSE200
  9. 230 IFA<21THENFL=1
  10. 270 IFA=28ORA=6THEND=HE*8MODE
  11. 280 IFA=29ORA=1THEND=HE*2MODE
  12. 290 IFA=30ORA=20THEND=HE*1MODE
  13. 300 IFA=31ORA=2THEND=HE*4MODE
  14. 400 IFFLTHENHE=D:GOTO700
  15. 410 IFM(CX,CY)ANDDTHENBEEP:GOTO200
  16. 420 X=(D=2)-(D=8):Y=(D=1)-(D=4):GOSUB5500:HE=D
  17. 480 IFINT(M(CX,CY)/16)=HE*4MODETHENML=ML-1:M(CX,CY)=M(CX,CY)ANDE
  18. 500 CX=CX+X:CY=CY+Y:Q=Q+1:IFCX<0 OR CX>MX OR CY<0 OR CY>MYTHEN700
  19. 530 IF(M(CX,CY)AND240)=0THENM(CX,CY)=M(CX,CY)OR(HE*16):ML=ML+1
  20. 700 GOSUB1000:GOSUB5000:FL=0:GOTO200
  21. 1000 FORI=0TO7:PRINT@I*40,SPACE$(22);:NEXT
  22. 1030 LINE(0,0)-(127,63),1,B:RESTORE
  23. 1100 FORZD=0TO4:READH,J,L,M,R,P,V,B:GOSUB2000:IFZTHENRETURN
  24. 1200 :NEXT
  25. 1600 ZD=5:GOSUB2000:LINE(55,27)-(71,35):LINE(55,35)-(71,27):RETURN
  26. 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
  27. 2020 RM=M(X,Y)ANDE:ZL=HE*2MODE:ZF=HE:ZR=HE*8MODE:IFZD=5THENRETURN
  28. 2050 F=H:G=J:IFRMANDZLTHENF=L:G=M
  29. 2060 LINE(R,F)-(P,H):LINE-(P,J):LINE-(R,G):F=H:G=J:IFRMANDZRTHENF=L:G=M
  30. 2080 LINE(V,F)-(B,H):LINE-(B,J):LINE-(V,G):Z=0:IFRMANDZFTHENLINE(P,H)-(B,J),1,B:Z=1
  31. 2100 RETURN
  32. 2190 RM=E:IFZD=0THEN9000
  33. 2210 Z=1:IFZD=1THENLINE(E,7)-(K,55),1,BF:RETURN
  34. 2220 C=4*ZD:LINE(E+C+C,7+C)-(K-C-C,55-C),1,BF:RETURN
  35. 3000 CLS:GOSUB8000:CLS
  36. 3030 PRINT@40,"Size of maze:X";:INPUTMX:MX=INT(MX-1):PRINT@60,"Y";:INPUTMY:MY=INT(MY-1)
  37. 3070 IFMY>14ORMX>25THENPRINT"Max. X is 26, Max. Y is 15":GOTO3030
  38. 3080 IFMX<1ORMY<1THENPRINT"Size must be greater than one":GOTO3030
  39. 3100 DIMM(MX,MY):FORY=0TOMY:FORX=0TOMX:M(X,Y)=E:NEXT:NEXT
  40. 3160 CX=0:CY=MY:CLS:PRINT@54,"Building Maze":ML=0:DIMD(4):N=(MX+1)*(MY+1):N9=1
  41. 3400 D=0
  42. 3410 PRINT@99,N-N9;
  43. 3420 IFCY>0THENIFM(CX,CY-1)=ETHEND=D+1:D(D)=1
  44. 3430 IFCX>0THENIFM(CX-1,CY)=ETHEND=D+1:D(D)=2
  45. 3440 IFCY<MYTHENIFM(CX,CY+1)=ETHEND=D+1:D(D)=4
  46. 3450 IFCX<MXTHENIFM(CX+1,CY)=ETHEND=D+1:D(D)=8
  47. 3460 IFD=0THENGOSUB4000:GOTO3400
  48. 3470 DR=D(INT(RND(1)*D)+1):X=(DR=2)-(DR=8):Y=(DR=1)-(DR=4)
  49. 3520 M(CX,CY)=M(CX,CY)-DR:M(CX+X,CY+Y)=M(CX+X,CY+Y)-(DR*4MODE)
  50. 3540 CX=CX+X:CY=CY+Y:N9=N9+1:IFN9<NTHEN3400
  51. 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
  52. 3720 RETURN
  53. 4000 CX=CX+1:IFCX>MXTHENCX=0:CY=CY+1
  54. 4020 IFCY>MYTHENCY=0
  55. 4030 IFM(CX,CY)=ETHEN4000ELSERETURN
  56. 5000 Y1=CY:Y2=CY:X1=CX:X2=CX:IFZD=5THENZD=4
  57. 5030 IFHE=1THENY1=Y1-ZD:IFY1<0THENY1=0
  58. 5040 IFHE=2THENX1=X1-ZD:IFX1<0THENX1=0
  59. 5050 IFHE=4THENY2=Y2+ZD:IFY2>MYTHENY2=MY
  60. 5060 IFHE=8THENX2=X2+ZD:IFX2>MXTHENX2=MX
  61. 5100 FORUY=Y1TOY2:VY=3+UY*4:FORUX=X1TOX2
  62. 5130 VX=132+UX*4:FORI=0TO3:VD=2^I:IFVDANDM(UX,UY)THENPRINT"";ELSEGOTO5300
  63. 5200 LINE(VX-(I=3)*4,VY-(I=2)*4)-(VX-(I<>1)*4,VY-(I<>0)*4)
  64. 5300 NEXT:NEXT:NEXT
  65. 5400 VX=132+CX*4:VY=3+CY*4:LINE(VX+1,VY+1)-(VX+3,VY+3),0,B
  66. 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)
  67. 5460 RETURN
  68. 5500 VX=132+CX*4:VY=3+CY*4:LINE(VX+1,VY+1)-(VX+3,VY+3),0,B:RETURN
  69. 8000 INPUT"Would you like instructions";A$:IFLEFT$(A$,1)<>"Y"ANDLEFT$(A$,1)<>"y"THENRETURNELSECLS
  70. 8020 R$=CHR$(27):PRINT@14,R$;"pMAZ";R$;"qing":PRINT@45,"by Jim Straus ":PRINT"  recoded by Alan Stein"
  71. 8060 PRINT@122,"The object of the game is to find yourway out of a maze. The left side of the"
  72. 8080 PRINT"screen is your view inside the maze. The right side is where you have been."
  73. 8100 PRINT@288,R$;"pPress any key to continue";R$;"q";
  74. 8110 IFINKEY$=""THEN8110
  75. 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";
  76. 8270 PRINT" shift+arrow keys  to turn in place.":PRINT@216,"Good Luck!"
  77. 8310 PRINT@288,R$;"pPress any key to continue";R$;"q";:IFINKEY$=""THEN8310
  78. 8500 RETURN
  79. 9000 FORI=0TO7:PRINT@I*40,SPACE$(22);:NEXT
  80. 9030 ML=ML+1:IFML=QTHENPRINT@05,"You Win!!!"ELSEPRINT@0,"You Had";Q-ML;"Extra Moves"
  81. 9032 IF Q-ML>ML THEN SC=Q-ML-ML
  82. 9034 IF Q-ML<ML THEN SC=Q-ML+ML*ML
  83. 9036 IF ML=SC THEN SC=SC*SC*SC
  84. 9050 PRINT@80,"Best Run is";ML;"Moves":PRINT@160,"Your Score is ";SC:Y1=0:Y2=MY:X1=0:X2=MX
  85. 9060 GOSUB5100
  86. 9900 PRINT@240,"Again";:INPUTA$:IFLEFT$(A$,1)="N"ORLEFT$(A$,1)="n"THENMENUELSERUN
  87. 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
  88. 9960 DATA19,43,39,47,87,79,27,35,23,39,47,55,79,71
  89.