home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug054.ark / CHASE2.BAS < prev    next >
Encoding:
BASIC Source File  |  1984-04-29  |  5.1 KB  |  140 lines

  1. 10 ! *********************** CHASE PROGRAM ***********************
  2. 20 !               BY MICHAEL P. RUF
  3. 30 !               12/16/78
  4. 35 BE$=CHR$(7)
  5. 40 OPTION #0,"W",255
  6. 50 INPUT "ENTER WIDTH OF MAZE.";C1
  7. 60 IF C1>77 THEN PRINT "THE LIMIT IS 77":GOTO 50
  8. 70 INPUT "LENGTH";C4
  9. 80 IF C4>18 THEN PRINT "LIMIT IS 18": GOTO 70
  10. 90 INPUT "FOR DENSITY OF THE MAZE, ENTER A NUMBER 1-100";D3
  11. 100 IF D3<1 OR D3>100 THEN PRINT "1-100!!":GOTO 90
  12. 110 E4=C1*C4:DIM M(E4+100)
  13. 120 E$=CHR$(155)
  14. 130 PRINT E$"E";
  15. 140 FOR A3=1 TO C1+2:PRINT "_";:NEXT A3
  16. 150 PRINT
  17. 160 FOR V=33 TO (C4+32)
  18. 170 H=C1+33
  19. 180 PRINT "|"
  20. 190 PRINT E$"F";CHR$(V);CHR$(H)"|"
  21. 200 NEXT V
  22. 210 FOR A4=1 TO C1+2:PRINT "-";:NEXT A4
  23. 220 C=INT(C1*C4)*(D3/200)
  24. 230 FOR D=1 TO C
  25. 240 V=INT(RND(2)*(C4+1))+32
  26. 250 IF V<33 THEN 240
  27. 260 H=INT(RND(3)*C1)+32
  28. 270 IF H<33 THEN 260
  29. 275 PRINT
  30. 280 PRINT E$"F";CHR$(V);CHR$(H)"*"
  31. 290 V=V-32:H=H-32
  32. 300 M(((V-1)*C1)+H)=1
  33. 310 NEXT D
  34. 320 PRINT E$"H";E$"C";E$"B";"+^B
  35. 330 M(1)=2:J=1
  36. 340 PRINT E$ "F";CHR$(C4+32);CHR$(C1+32);"#"
  37. 350 M(E4)=2:K=E4
  38. 360 PRINT
  39. 370 PRINT E$"F4 ";E$"J";CHR$(0);CHR$(0);CHR$(0);CHR$(0);CHR$(0);:INPUT "ENTER MOVE PLAYER ONE";G:O=1:P=0:U=U+1
  40. 371 IF G=5 THEN 380
  41. 372 IF G>999 THEN F5=1000 ELSE IF G>99 THEN F5=100 ELSE F5=10
  42. 375 F1=INT(G/F5):F2=G-F1*F5:G=F1
  43. 376 F8=F6: IF F8>E4/4-2 THEN PRINT "YOU'RE ALL OUT OF ENERGY.":F9=1:GOTO 420
  44. 378 F6=F6+F2:IF F6>E4/4 THEN PRINT "YOU DON'T HAVE ENOUGH ENERGY":F6=F6-F2:GOSUB 2000:GOTO 370
  45. 380 IF G=5 THEN IF B20=10 THEN PRINT "YOU HAVE USED ALL YOUR BULLETS.":GOSUB 2000 ELSE INPUT "ENTER SHOT";G:B20=B20+1:B7=1:GOTO 372
  46. 385 IF B10=10 THEN 370
  47. 390 IF G>0 AND G<10 AND G=INT(G) THEN GOSUB 470
  48. 400  PRINT "ENTER 1,2,3,4,6,7,8, OR 9":GOSUB 2000:GOTO 370
  49. 410 GOTO 370
  50. 420 PRINT E$"F4 ";E$"J";CHR$(0);CHR$(0);CHR$(0);CHR$(0);CHR$(0);:INPUT "ENTER MOVE PLAYER TWO";I:P=1:O=0:X=X+1
  51. 421 IF I=5 THEN 430
  52. 422 IF I>999 THEN FA=1000 ELSE IF I>99 THEN FA=100 ELSE FA=10
  53. 424 FB=INT(I/FA):F2=I-(FB*FA):I=FB
  54. 425 FD=FC:IF FD>E4/4 THEN PRINT "YOU'RE ALL OUT OF ENERGY":FF=1:GOTO 370
  55. 426 FC=FC+F2:IF FC>E4/4 THEN PRINT "THERE ISN'T ENOUGH ENERGY LEFT.":FC=FC-F2:GOSUB 2000:GOTO 420
  56. 430 IF I=5 THEN IF B6=10 THEN PRINT "YOU HAVE USED ALL YOUR BULLETS.":GOSUB 2000:GOTO 420 ELSE INPUT "ENTER SHOT";I:B6=B6+1:B7=1:GOTO 422
  57. 440 GOSUB 470
  58. 450 PRINT "PLEASE ENTER 1,2,3,4,6,7,8, OR 9":GOSUB 2000
  59. 460 GOTO 420
  60. 470 ! THIS ROUTINE CALCULATES THE COORDINATES IN THE MATRIX OF THE
  61. 480 FOR F3=1 TO F2
  62. 490 IF O=1 THEN A5=G ELSE A5=I
  63. 500 IF O=1 THEN P2=J ELSE P2=K
  64. 510 IF B7=1 THEN FOR B8=1 TO F2 :B5=P2:B11=0:GOTO 540
  65. 530 IF O=1 THEN B5=J ELSE B5=K
  66. 540 ON A5 GOTO 550,560,570,580,760,590,600,610,620
  67. 550 C5=B5+C1-1:GOTO 630 
  68. 560 C5=B5+C1:GOTO 630
  69. 570 C5=B5+C1+1:GOTO 630
  70. 580 C5=B5-1:GOTO 630
  71. 590 C5=B5+1:GOTO 630
  72. 600 C5=B5-C1-1:GOTO 630
  73. 610 C5=B5-C1:GOTO 630
  74. 620 C5=B5-C1+1:GOTO 630
  75. 630 ! CHECK FOR BOUNCE OR HITTING WALL
  76. 631 IF O=1 AND C5=J OR P=1 AND C5=K THEN B8=10000:PRINT "^G^G":GOTO 780
  77. 632 IF A5=1 OR A5=4 OR A5=7 THEN IF C5/C1=INT(C5/C1) THEN 710
  78. 634 IF A5=3 OR A5=6 OR A5=9 THEN IF(C5-1)/C1=INT((C5-1)/C1) THEN 710
  79. 636 IF C5<1 THEN IF B7=1 THEN A5=A5-6:B11=B11+1:GOTO 540 ELSE 730
  80. 638 IF C5>E4 THEN IF B7=1 THEN A5=A5+6:B11=B11+1:GOTO 540 ELSE 730
  81. 642 IF B5=1 AND A5=3 AND M(C5)=1 THEN 730
  82. 644 IF B5=C1 AND A5=1 AND M(C5)=1 THEN 730
  83. 646 IF B5=E4-C1+1 AND A5=9 AND M(C5)=1 THEN 730
  84. 648 IF B5=E4 AND A5=7 AND M(C5)=1 THEN 730
  85. 660 IF B11=9 THEN B11=0:A5=ABS(A5-10):GOTO 540
  86. 670 IF M(C5)=1 THEN 710
  87. 700 GOTO 740
  88. 710 IF B7=1 THEN B11=B11+1:IF A5=1 OR A5=4 OR A5=7 THEN A5=A5+2 ELSE IF A5=2 THEN A5=8 ELSE IF A5=8 THEN A5=2 ELSE A5=A5-2
  89. 720 IF B7=1 THEN 540
  90. 730 PRINT "^G^G^G";
  91. 733 IF FF4=1 THEN 370 ELSE IF F8=1 THEN 420
  92. 735 IF B7=1 THEN IF O=1 THEN R=1:GOTO 1060 ELSE R=0:GOTO 1060 ELSE IF O=1 GOTO 420 ELSE 370
  93. 740 Q=C5:IF O=1 THEN R=1 ELSE R=0
  94. 750 GOTO 780
  95. 760 IF O=1 THEN 420 ELSE 370
  96. 770 H=H+32
  97. 780 !MOVER RTN
  98. 790 IF O=1 THEN P1=J ELSE P1=K
  99. 800 IF B7=1 THEN P1=P2
  100. 810 S=INT((Q/C1)+.999)
  101. 820 S=S+32
  102. 830 T=(Q/C1-INT(Q/C1))*C1
  103. 840 T=INT(T+.1)
  104. 850 IF T<1 THEN T=C1
  105. 860 T=T+32
  106. 870 IF B7=1 THEN IF B8=1 THEN 980 ELSE 900
  107. 880 IF R=1 THEN M(J)=0 ELSE M(K)=0
  108. 890 M(Q)=2
  109. 900 V=INT((P1/C1)+.999)
  110. 910 V=V+32
  111. 920 H=(P1/C1-INT(P1/C1))*C1
  112. 930 H=INT(H+.1)
  113. 940 IF H<1 THEN H=C1
  114. 950 H=H+32
  115. 960 PRINT E$"F";CHR$(V);CHR$(H)" ";
  116. 970 IF B9=1 THEN B9=0:GOTO 1080
  117. 980 IF R=0 THEN 1000
  118. 990 PRINT E$"F";CHR$(S);CHR$(T)"+"
  119. 1000 IF R=0 THEN PRINT E$"F";CHR$(S);CHR$(T)"#"
  120. 1010 IF B7=1 THEN P2=Q ELSE IF O=1 THEN J=Q ELSE K=Q
  121. 1020 IF B8>1 THEN IF P2=K OR P2=J THEN 1090
  122. 1022 IF O=1 AND P2=E4 THEN B6=10:PRINT "^G^G^G"
  123. 1025 IF P=1 AND P2=1 THEN B20=10:PRINT "^G^G^G"
  124. 1030 IF K=J THEN 1090
  125. 1040 IF J=E4 OR K=1 THEN 1090
  126. 1050 IF B7=1 THEN NEXT B8 ELSE NEXT F3
  127. 1060 IF B7=1 THEN IF P2=K OR P2=J THEN B7=0:GOTO 1080
  128. 1070 IF B7=1 THEN B7=0:P1=P2:B9=1:GOTO 900
  129. 1075 IF FF4=1 THEN 370 ELSE IF F8=1 THEN 420
  130. 1080 IF R=1 THEN GOTO 420 ELSE 370
  131. 1090 IF R=1 THEN A$="ONE"+BE$ ELSE A$="TWO^G"
  132. 1100 PRINT E$"F4 ";E$"J";CHR$(0);CHR$(0);CHR$(0);CHR$(0);
  133. 1110 PRINT "^G^GPLAYER^G^G "A$" WINS^G THE^G GAME!!!";
  134. 1120 GOTO 32000
  135. 2000 ! WAIT RTN
  136. 2010 FOR A15=1 TO 400:NEXT A15
  137. 2020 RETURN
  138. 2030 !
  139. 32000 END
  140.