home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 26 / CD_ASCQ_26_1295.iso / vrac / begin_jb.zip / ALIENS.BAS next >
BASIC Source File  |  1995-07-21  |  8KB  |  211 lines

  1. DECLARE SUB title (Players!, Max!)
  2. '  Initilising varibles
  3. ' $DYNAMIC
  4. CALL title(Players, Max)
  5. TYPE xy
  6.      x AS INTEGER
  7.      y AS INTEGER
  8.      alive AS INTEGER
  9. END TYPE
  10. DIM asp1(Max) AS xy   'aliens going up
  11. DIM asp2(Max) AS xy   'aliens going down
  12. DIM ps(2) AS xy       '2 players
  13. DIM bullp(2) AS xy    '1 bullet for each player
  14. DIM bulla(Max, 2) AS xy   '1 bullet for each alien
  15. DIM score(2)          '2 score keepers
  16. DIM killed(2)         'sets of aliens killed
  17. player1$ = "\/"
  18. player2$ = "/\"
  19. alien$ = CHR$(1)
  20. fire1 = 0: fire2 = 0
  21. endp1 = 0:
  22. IF Players = 1 THEN endp2 = 1:  ELSE endp2 = 0
  23. FOR x = 1 TO Max
  24. asp1(x).y = 10
  25. asp2(x).y = 12
  26. asp1(x).x = (78 - Max * 2) - 1 + x * 2
  27. asp2(x).x = x * 2
  28. NEXT
  29. killed(1) = 0: killed(2) = 0
  30. ps(1).y = 2: ps(1).x = 19
  31. ps(2).y = 22: ps(2).x = 59
  32. ' main game
  33. CLS                   'clearscreen!!!
  34. DO
  35. ' Keys check:-
  36. FOR c = 1 TO Max
  37. a$ = LCASE$(INKEY$)
  38. 'p1's
  39. IF endp1 = 0 THEN
  40. IF a$ = "z" THEN LOCATE ps(1).y, ps(1).x: PRINT "  ": ps(1).x = ps(1).x - 1
  41. IF a$ = "x" THEN LOCATE ps(1).y, ps(1).x: PRINT "  ": ps(1).x = ps(1).x + 1
  42. IF a$ = " " AND fire1 = 0 THEN fire1 = 1: bullp(1).x = ps(1).x: bullp(1).y = 3
  43. END IF
  44. ' p2's
  45. IF endp2 = 0 THEN
  46. IF a$ = "o" THEN LOCATE ps(2).y, ps(2).x: PRINT "  ": ps(2).x = ps(2).x - 1
  47. IF a$ = "p" THEN LOCATE ps(2).y, ps(2).x: PRINT "  ": ps(2).x = ps(2).x + 1
  48. IF a$ = CHR$(13) AND fire2 = 0 THEN fire2 = 1: bullp(2).x = ps(2).x: bullp(2).y = 20
  49. END IF
  50. '
  51. IF a$ = "q" THEN EXIT DO
  52. ' firing
  53. COLOR 1
  54. IF fire1 > 0 THEN
  55. LOCATE bullp(1).y, bullp(1).x: PRINT " "
  56. bullp(1).y = bullp(1).y + 1
  57. LOCATE bullp(1).y, bullp(1).x: PRINT "*"
  58. END IF
  59. IF fire2 > 0 THEN
  60. LOCATE bullp(2).y, bullp(2).x: PRINT " "
  61. bullp(2).y = bullp(2).y - 1
  62. LOCATE bullp(2).y, bullp(2).x: PRINT "*"
  63. END IF
  64. IF bullp(1).y = ps(2).y AND bullp(1).x = ps(2).x THEN LOCATE bullp(1).y, bullp(1).x: PRINT "  ": endp2 = 1
  65. IF bullp(2).y = ps(1).y AND bullp(2).x = ps(1).x THEN LOCATE bullp(2).y, bullp(2).x: PRINT "  ": endp1 = 1
  66. IF bullp(1).y = 23 THEN fire1 = 0: LOCATE bullp(1).y, bullp(1).x: PRINT " "
  67. IF bullp(2).y = 1 THEN fire2 = 0: LOCATE bullp(2).y, bullp(2).x: PRINT " "
  68. ' off screen checking
  69. FOR p = 1 TO 2
  70. IF ps(p).x > 78 THEN ps(p).x = 1
  71. IF ps(p).x < 1 THEN ps(p).x = 78
  72. NEXT
  73. ' Display players
  74. COLOR 2
  75. IF endp1 = 0 THEN LOCATE ps(1).y, ps(1).x: PRINT player1$
  76. COLOR 10
  77. IF endp2 = 0 THEN LOCATE ps(2).y, ps(2).x: PRINT player2$
  78. IF endp1 = 1 THEN COLOR 8:  ELSE COLOR 15
  79. LOCATE 1, 1: PRINT "Player 1       Score:-"; score(1)
  80. IF endp2 = 1 THEN COLOR 8:  ELSE COLOR 15
  81. LOCATE 23, 1: PRINT "Player 2       Score:-"; score(2)
  82. COLOR 4
  83. ' middle line :- COLOR 6:LOCATE 11, 1: FOR p = 1 TO 78: PRINT "-"; : NEXT
  84. ' aliens1
  85. IF asp1(c).alive = 0 THEN
  86. LOCATE asp1(c).y, asp1(c).x: PRINT " "
  87. asp1(c).x = asp1(c).x + 1
  88. IF asp1(c).x = 78 THEN asp1(c).y = asp1(c).y - 1: asp1(c).x = 1
  89. LOCATE asp1(c).y, asp1(c).x: PRINT alien$
  90. IF RND * 12 > 6 AND bulla(c, 1).alive = 0 THEN bulla(c, 1).alive = 1: bulla(c, 1).x = asp1(c).x: bulla(c, 1).y = asp1(c).y + 1
  91. END IF
  92. IF endp1 + endp2 = 2 THEN EXIT DO
  93. ' aliens2
  94. IF asp2(c).alive = 0 THEN
  95. LOCATE asp2(c).y, asp2(c).x: PRINT " "
  96. asp2(c).x = asp2(c).x - 1
  97. IF asp2(c).x = 1 THEN asp2(c).y = asp2(c).y + 1: asp2(c).x = 78
  98. LOCATE asp2(c).y, asp2(c).x: PRINT alien$
  99. IF RND * 12 > 6 AND bulla(c, 2).alive = 0 THEN bulla(c, 2).alive = 1: bulla(c, 2).x = asp2(c).x: bulla(c, 2).y = asp2(c).y - 1
  100. END IF
  101. ' dieing aliens
  102. FOR s = 1 TO Max
  103. COLOR 15
  104. IF asp2(s).alive < 1 THEN
  105. IF asp2(s).y = bullp(1).y AND bullp(1).x = asp2(s).x THEN asp2(s).alive = 1: LOCATE asp2(s).y, asp2(s).x: PRINT CHR$(15): fire1 = 0: bullp(1).y = 0: score(1) = score(1) + 5: killed(2) = killed(2) + 1: LOCATE asp2(s).y, asp2(s).x: PRINT " "
  106. IF asp2(s).y = bullp(2).y AND bullp(2).x = asp2(s).x THEN asp2(s).alive = 1: LOCATE asp2(s).y, asp2(s).x: PRINT CHR$(15): fire2 = 0: bullp(2).y = 0: score(2) = score(2) + 5: killed(2) = killed(2) + 1: LOCATE asp2(s).y, asp2(s).x: PRINT " "
  107. END IF
  108. IF asp1(s).alive < 1 THEN
  109. IF asp1(s).y = bullp(1).y AND bullp(1).x = asp1(s).x THEN asp1(s).alive = 1: LOCATE asp1(s).y, asp1(s).x: PRINT CHR$(15): fire1 = 0: bullp(1).y = 0: score(1) = score(1) + 5: killed(1) = killed(1) + 1: LOCATE asp1(s).y, asp1(s).x: PRINT " "
  110. IF asp1(s).y = bullp(2).y AND bullp(2).x = asp1(s).x THEN asp1(s).alive = 1: LOCATE asp1(s).y, asp1(s).x: PRINT CHR$(15): fire2 = 0: bullp(2).y = 0: score(2) = score(2) + 5: killed(1) = killed(1) + 1: LOCATE asp1(s).y, asp1(s).x: PRINT " "
  111. END IF
  112. IF endp1 = 0 THEN
  113. FOR al = 1 TO 2
  114. IF ps(1).y = bulla(s, al).y AND bulla(s, al).x = ps(1).x THEN LOCATE ps(1).y, ps(1).x: PRINT CHR$(15): bulla(s, al).alive = 0: bulla(s, al).y = 0: endp1 = 1: LOCATE ps(1).y, ps(1).x: PRINT "  "
  115. NEXT
  116. END IF
  117. IF endp2 = 0 THEN
  118. FOR al = 1 TO 2
  119. IF ps(2).y = bulla(s, al).y AND bulla(s, al).x = ps(2).x THEN LOCATE ps(2).y, ps(2).x: PRINT CHR$(15): bulla(s, al).alive = 0: bulla(s, al).y = 0: endp2 = 1: LOCATE ps(2).y, ps(2).x: PRINT "  "
  120. NEXT
  121. END IF
  122. COLOR 3
  123. IF bulla(s, 1).alive = 1 THEN
  124. LOCATE bulla(s, 1).y, bulla(s, 1).x: PRINT " "
  125. bulla(s, 1).y = bulla(s, 1).y + 1
  126. LOCATE bulla(s, 1).y, bulla(s, 1).x: PRINT "*"
  127. END IF
  128. IF bulla(s, 2).alive = 1 THEN
  129. LOCATE bulla(s, 2).y, bulla(s, 2).x: PRINT " "
  130. bulla(s, 2).y = bulla(s, 2).y - 1
  131. LOCATE bulla(s, 2).y, bulla(s, 2).x: PRINT "*"
  132. END IF
  133. IF bulla(s, 2).y = 1 THEN bulla(s, 2).alive = 0: LOCATE bulla(s, 2).y, bulla(s, 2).x: PRINT "  "
  134. IF bulla(s, 1).y = 23 THEN bulla(s, 1).alive = 0: LOCATE bulla(s, 1).y, bulla(s, 1).x: PRINT "  "
  135. NEXT s
  136. IF killed(1) + killed(2) = Max * 2 THEN
  137. Max = Max + 5
  138. REDIM asp1(Max) AS xy   'aliens going up
  139. REDIM asp2(Max) AS xy   'aliens going down
  140. REDIM bulla(Max, 2) AS xy 'aliens x + y's of bulletes
  141. player1$ = "\/"
  142. player2$ = "/\"
  143. alien$ = CHR$(1)
  144. fire1 = 0: fire2 = 0
  145. REM endp1 = 0: endp2 = 0
  146. FOR x = 1 TO Max
  147. asp1(x).y = 10
  148. asp2(x).y = 12
  149. asp1(x).x = (78 - Max * 2) - 1 + x * 2
  150. asp2(x).x = x * 2
  151. NEXT
  152. ps(1).y = 2: ps(1).x = 19
  153. ps(2).y = 22: ps(2).x = 59
  154. killed(1) = 0
  155. killed(2) = 0
  156. CLS
  157. COLOR 13
  158. LOCATE 5, 20: PRINT "O O O  OOOOO  O   O  OOOOO"
  159. LOCATE 6, 20: PRINT "O O O  O   O  O   O  O    "
  160. LOCATE 7, 20: PRINT "O O O  OOOOO   O O   OOOOO"
  161. LOCATE 8, 20: PRINT "O O O  O   O    O    O    "
  162. LOCATE 9, 20: PRINT " O O   O   O    O    OOOOO"
  163. LOCATE 12, 30: PRINT (Max / 5) - 2
  164. LOCATE 14, 28: PRINT "Completed"
  165. LOCATE 23, 1: PRINT "Press enter to continue."
  166. PLAY "a.bcd.d.cba."
  167. DO
  168. LOOP UNTIL INKEY$ = CHR$(13)
  169. CLS                     'Clear The Screen!!
  170. END IF
  171. IF Max > 35 THEN CALL title(Players, Max)
  172. NEXT c
  173. LOOP
  174. RUN
  175. CALL title(Players, Max)
  176. OPEN "aliens.hgh" FOR RANDOM AS #1
  177. GET #1, 1, oldscore
  178. IF score(1) > score(2) AND score(1) > oldscore THEN PUT #1, 1, score(1)
  179. IF score(2) > score(1) AND score(2) > oldscore THEN PUT #1, 1, score(2)
  180. CLOSE #1
  181.  
  182. REM $STATIC
  183. SUB title (Players, Max)
  184. SCREEN 0
  185. CLS
  186. Max = 5
  187. Players = 2
  188. cur$ = ""
  189. DIM t(5)
  190. FOR d = 1 TO 5: t(d) = d: NEXT
  191. DO
  192. COLOR t(1): LOCATE 4, 12: PRINT "2 Player Alien Invaders"
  193. COLOR t(2): LOCATE 6, 12: PRINT "(P)layers ="; Players
  194. COLOR t(3): LOCATE 7, 12: PRINT "(A)lien Wave = "; Max / 5; "  Aliens = "; Max
  195. COLOR t(4): LOCATE 8, 12: PRINT "(S)tart"
  196. COLOR t(5): LOCATE 9, 12: PRINT "(E)xit"
  197. FOR f = 1 TO 200: NEXT f
  198. FOR d = 1 TO 5
  199. t(d) = t(d) - 1
  200. IF t(d) = 0 THEN t(d) = 14
  201. NEXT
  202. a$ = LCASE$(INKEY$)
  203. IF a$ = "e" THEN END
  204. IF a$ = "p" THEN IF Players = 1 THEN Players = 2:  ELSE Players = 1
  205. IF a$ = "a" THEN cur$ = "a"
  206. IF cur$ = "a" AND (a$ = "=" OR a$ = "+") AND Max < 35 THEN Max = Max + 5
  207. IF cur$ = "a" AND a$ = "-" AND Max > 1 THEN Max = Max - 5
  208. LOOP UNTIL a$ = "s"
  209. END SUB
  210.  
  211.