home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / goob.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-04-24  |  7.0 KB  |  248 lines

  1. 105     ' ********* BASIC version of RatBas program ********** 
  2. 110      DEFINT I-N 
  3. 115    'this program was written by Michael and Lennie Heyman
  4. 120    'and translated to structured basic by Paul McKnight 3/1/83
  5. 125    '
  6. 130    'constants
  7. 135      CLASER$="                                       "
  8. 140      DEFINT A-H
  9. 145      DEFINT O-Z
  10. 150    '
  11. 155     GOTO 25000 ' jump to program 
  12. 200     '----------------------- PROCEDURE NOISE
  13. 205      BOUNCE$="MBMLT255L64N20N25N30N35N40N45N50"
  14. 210      BOOM$="MBMLT255L64N1N0N1N0N1N0N1N0N1N0N1N0N1N0N1N0N1N0"
  15. 215      ZAP$="MBMLT255L64N72N71N70N69N68N67N66N65N64N63N62N61N60N59"
  16. 220     RETURN ' ------------------------------------------
  17. 225    '
  18. 300     '----------------------- PROCEDURE KEYSTOP
  19. 305      KEY(9) STOP
  20. 310      KEY(10) STOP
  21. 315     RETURN ' ------------------------------------------
  22. 320    '
  23. 400     '----------------------- PROCEDURE KEYON
  24. 405      KEY(9) ON
  25. 410      KEY(10) ON
  26. 415     RETURN ' ------------------------------------------
  27. 420    '
  28. 500     '----------------------- PROCEDURE PRINTSCORE
  29. 505     GOSUB  300 ' KEYSTOP
  30. 510      LOCATE 25,3
  31. 515      PRINT SCORE;
  32. 520     GOSUB  400 ' KEYON
  33. 525     RETURN ' ------------------------------------------
  34. 530    '
  35. 600     '----------------------- PROCEDURE COLLIDE
  36. 605      PLAY BOOM$
  37. 610      PLAY BOOM$
  38. 615     GOSUB  300 ' KEYSTOP
  39. 620      LOCATE Y,1:PRINT CHR$(219);:FOR T=1 TO 80:NEXT
  40. 625      LOCATE Y,2:PRINT CHR$(219);:FOR T=1 TO 80:NEXT
  41. 630      LOCATE Y,2:PRINT CHR$(178);:FOR T=1 TO 80:NEXT
  42. 635      LOCATE Y,1:PRINT CHR$(178);:FOR T=1 TO 80:NEXT
  43. 640      LOCATE Y,2:PRINT CHR$(177);:FOR T=1 TO 80:NEXT
  44. 645      LOCATE Y,1:PRINT CHR$(177);:FOR T=1 TO 80:NEXT
  45. 650      LOCATE Y,2:PRINT CHR$(176);:FOR T=1 TO 80:NEXT
  46. 655      LOCATE Y,1:PRINT CHR$(176);:FOR T=1 TO 80:NEXT
  47. 660      LOCATE Y,2:PRINT" ";
  48. 665      LOCATE Y,1:PRINT" ";
  49. 670     GOSUB  400 ' KEYON
  50. 675     RETURN ' ------------------------------------------
  51. 680    '
  52. 700     '----------------------- PROCEDURE CHECK
  53. 705    IF LANE(I)=Y  THEN GOSUB  600 ' COLLIDE
  54. 710      SCORE=SCORE-50
  55. 715     GOSUB  300 ' KEYSTOP
  56. 720      LOCATE LANE(I),TIE(I):PRINT"  ";
  57. 725     GOSUB  400 ' KEYON
  58. 730      LANE(I)=INT(22*RND)+2
  59. 735      TIE(I)=38
  60. 740     RETURN ' ------------------------------------------
  61. 745    '
  62. 800     '----------------------- PROCEDURE MOVESUN
  63. 805      COLOR 15
  64. 810     GOSUB  300 ' KEYSTOP
  65. 815      LOCATE Y,1
  66. 820      PRINT " ";
  67. 825      IF (UP=TRUE) AND (Y>2) THEN Y=Y-1
  68. 830      IF (UP=FALSE) AND (Y<23) THEN Y=Y+1
  69. 835      LOCATE Y,1:PRINT SUN$;
  70. 840     GOSUB  400 ' KEYON
  71. 845      COLOR 7
  72. 850     RETURN ' ------------------------------------------
  73. 855    '
  74. 900     '----------------------- PROCEDURE HIT
  75. 905      PLAY BOOM$
  76. 910      LOCATE V,H:PRINT CHR$(219);:FOR T=1 TO 80:NEXT
  77. 915      LOCATE V,H:PRINT CHR$(178);:FOR T=1 TO 80:NEXT
  78. 920      LOCATE V,H:PRINT CHR$(177);:FOR T=1 TO 80:NEXT
  79. 925      LOCATE V,H:PRINT CHR$(176);:FOR T=1 TO 80:NEXT
  80. 930      LOCATE V,H:PRINT" ";
  81. 935      SCORE=SCORE+TIE(K)
  82. 940    '
  83. 945     RETURN ' ------------------------------------------
  84. 950    '
  85. 1000     '----------------------- PROCEDURE LASER
  86. 1005     GOSUB  300 ' KEYSTOP
  87. 1010      PLAY ZAP$
  88. 1015      LOCATE Y,1:PRINT SUN$;
  89. 1020      COLOR 4:PRINT STRING$(7,205);
  90. 1025      COLOR 14:PRINT STRING$(7,205);
  91. 1030      COLOR 10:PRINT STRING$(7,205);
  92. 1035      COLOR 2:PRINT STRING$(6,205);
  93. 1040      COLOR 9:PRINT STRING$(6,205);
  94. 1045      COLOR 1:PRINT STRING$(6,205);
  95. 1050      COLOR 12
  96. 1055      LOCATE Y,1:COLOR 15:PRINT SUN$;:COLOR 7:PRINT CLASER$;
  97. 1060      SCORE=SCORE-5
  98. 1065      FOR K=1 TO NUMTIES
  99. 1070        IF Y=LANE(K)  THEN ELSE GOTO  1095
  100. 1075          V=LANE(K):H=TIE(K)
  101. 1080     GOSUB  900 ' HIT
  102. 1085          LANE(K)=INT(22*RND)+2
  103. 1090          TIE(K)=38
  104. 1095         ' IFEnd] 
  105. 1100      NEXT K
  106. 1105     GOSUB  400 ' KEYON
  107. 1110     RETURN ' ------------------------------------------
  108. 1115    '
  109. 1200     '----------------------- PROCEDURE REVERSE
  110. 1205      IF UP=TRUE THEN UP=FALSE ELSE UP=TRUE
  111. 1210      PLAY BOUNCE$
  112. 1215     RETURN ' ------------------------------------------
  113. 1220    '
  114. 1300     '----------------------- PROCEDURE SILENT
  115. 1305      BOUNCE$="":ZAP$="":BOOM$=""
  116. 1310     RETURN ' ------------------------------------------
  117. 1315    '
  118. 1400     '----------------------- PROCEDURE TIES
  119. 1405      FOR I=1 TO NUMTIES
  120. 1410        IF TIE(I)<3  THEN ELSE GOTO  1425
  121. 1415     GOSUB  700 ' CHECK
  122. 1420     GOTO   1450
  123. 1425     ' ELSE] 
  124. 1430          TIE(I)=TIE(I)-1
  125. 1435     GOSUB  300 ' KEYSTOP
  126. 1440          LOCATE LANE(I),TIE(I): PRINT CHR$(232)+"  ";
  127. 1445     GOSUB  400 ' KEYON
  128. 1450         ' IFEnd] 
  129. 1455      NEXT I
  130. 1460     GOSUB  800 ' MOVESUN
  131. 1465     GOSUB  500 ' PRINTSCORE
  132. 1470      IF (TIME$>"00:00:50") AND (LASTTEN=FALSE)  THEN ELSE GOTO  1490
  133. 1475        COLOR ,5,5
  134. 1480        CLS
  135. 1485        LASTTEN=TRUE
  136. 1490       ' IFEnd] 
  137. 1495     RETURN ' ------------------------------------------
  138. 1500    '
  139. 1600     '----------------------- PROCEDURE SETNUM
  140. 1605      NUMTIES=0
  141. 1610      WHILE NUMTIES<1 OR NUMTIES>5
  142. 1615        CLS
  143. 1620        LOCATE 10,1
  144. 1625        PRINT "  GOOB Version 1.10 (RatBAS) 3/19/83
  145. 1630        PRINT " How many tie fighters can you handle?"
  146. 1635        PRINT "1 to 5 ==>";
  147. 1640        NUM$=""
  148. 1645        WHILE NUM$=""
  149. 1650          NUM$=INKEY$
  150. 1655        WEND
  151. 1660        NUMTIES=VAL(NUM$)
  152. 1665      WEND
  153. 1670      CLS
  154. 1675     RETURN ' ------------------------------------------
  155. 1680    '
  156. 1700     '----------------------- PROCEDURE INIT
  157. 1705      OPTION BASE 1
  158. 1710     GOSUB  1600 ' SETNUM
  159. 1715      LASTEN=FALSE
  160. 1720      DIM TIE(NUMTIES)
  161. 1725      DIM LANE(NUMTIES)
  162. 1730      KEY 10,"": KEY 9,""
  163. 1735      KEY OFF
  164. 1740      TIME$="00:00:00"
  165. 1745     GOSUB  200 ' NOISE
  166. 1750      SCREEN 0,1
  167. 1755      LOCATE ,,0
  168. 1760      SUN$=CHR$(15)
  169. 1765      FOR L=1 TO NUMTIES
  170. 1770        LANE(L)=15:TIE(L)=38
  171. 1775      NEXT L
  172. 1780      Y=5
  173. 1785      UP=TRUE
  174. 1790    ON KEY(9) GOSUB  1200 ' REVERSE
  175. 1795    ON KEY(10) GOSUB  1000 ' LASER
  176. 1800    ON KEY(7) GOSUB  200 ' NOISE
  177. 1805    ON KEY(8) GOSUB  1300 ' SILENT
  178. 1810      KEY(7)ON:KEY(8)ON
  179. 1815     GOSUB  400 ' KEYON
  180. 1820     RETURN ' ------------------------------------------
  181. 1825    '
  182. 1900     '----------------------- PROCEDURE INSTR
  183. 1905      CLS
  184. 1910      PRINT " Do you want instructions?"
  185. 1915      WHILE INKEY$<>""
  186. 1920      WEND
  187. 1925      INS$=""
  188. 1930      WHILE INS$=""
  189. 1935        INS$=INKEY$
  190. 1940      WEND
  191. 1945      IF INS$="Y" OR INS$="y"  THEN ELSE GOTO  2055
  192. 1950        CLS
  193. 1955        PRINT "           INSTRUCTIONS for GOOB"
  194. 1960        PRINT
  195. 1965        PRINT " You are a sun shaped symbol that moves"
  196. 1970        PRINT " up and down along the left side of the"
  197. 1975        PRINT " screen.  To change direction, press"
  198. 1980        PRINT " <F9>.  Your goal is to shoot"
  199. 1985        PRINT " tie-fighters that come toward you from"
  200. 1990        PRINT " from the right side of the screen."
  201. 1995        PRINT " Fire your supercharged laser cannon by"
  202. 2000        PRINT " pressing <F10>. The closer your target"
  203. 2005        PRINT " the fewer points you get for hitting"
  204. 2010        PRINT " it.  Every shot you fire costs you 5"
  205. 2015        PRINT " points.  Every tie-fighter that hits"
  206. 2020        PRINT " the left side of the screen costs you"
  207. 2025        PRINT " 50 points. The game lasts one minute."
  208. 2030        PRINT "<F7> = sound.  <F8> = silence."
  209. 2035        PRINT
  210. 2040        PRINT "Press <SPACE0BAR> to proceed..."
  211. 2045        WHILE INKEY$<>" "
  212. 2050        WEND
  213. 2055       ' IFEnd] 
  214. 2060      CLS
  215. 2065    '
  216. 2070     RETURN ' ------------------------------------------
  217. 2075    '
  218. 25000     ' =================== PROCEDURE LOCATIONS ===========
  219. 25005     '  200 NOISE
  220. 25010     '  300 KEYSTOP
  221. 25015     '  400 KEYON
  222. 25020     '  500 PRINTSCORE
  223. 25025     '  600 COLLIDE
  224. 25030     '  700 CHECK
  225. 25035     '  800 MOVESUN
  226. 25040     '  900 HIT
  227. 25045     '  1000 LASER
  228. 25050     '  1200 REVERSE
  229. 25055     '  1300 SILENT
  230. 25060     '  1400 TIES
  231. 25065     '  1600 SETNUM
  232. 25070     '  1700 INIT
  233. 25075     '  1900 INSTR
  234. 25080     ' ================== PROGRAM ======================== 
  235. 25085     FALSE = 0: TRUE = NOT FALSE 
  236. 25090     GOSUB  1900 ' INSTR
  237. 25095     GOSUB  1700 ' INIT
  238. 25100      WHILE TIME$ < "00:01:00"
  239. 25105     GOSUB  1400 ' TIES
  240. 25110      WEND
  241. 25115     GOSUB  300 ' KEYSTOP
  242. 25120      COLOR 7,0,0
  243. 25125      CLS:LOCATE 10,25
  244. 25130      PRINT TIME$
  245. 25135      LOCATE 12,25
  246. 25140      PRINT SCORE
  247. 25145    END
  248.