'=========================================================================== ' Subject: SPACE INVADERS WITH MUSIC Date: 05-03-96 (00:00) ' Author: Kenneth Green Code: QB, QBasic, PDS ' Origin: geocities.com/TimesSquare/2609 Packet: GAMES.ABC '=========================================================================== DEF fnrand (n) = INT(RND(1) * n) + 1 v$(1) = "&hb0&h20&h23&h40&h43&h60&h63&h80&h83&hA0&hB0" v$(2) = "&hb1&h21&h24&h41&h44&h61&h64&h81&h84&hA1&hB1" v$(3) = "&hb2&h22&h25&h42&h45&h62&h65&h82&h85&hA2&hB2" v$(4) = "&hb3&h28&h2b&h48&h4b&h68&h6b&h88&h8b&hA3&hB3" v$(5) = "&hb7&h31&h51&h71&h91&ha7&h34&h54&h74&h94&hB7" v$(6) = "&hb8&h32&h52&h72&h92&ha8&h35&h55&h75&h95&hb8" S$(1) = "&h11&h0C&H03&H10&h00&hF8&hC2&h27&h70&h8E&h22" S$(2) = "&h11&h0C&H03&H10&h00&hF8&hC2&h27&h70&hBA&h22" S$(3) = "&h11&hc0&h00&h00&h00&h94&h33&h24&h00&hbb&h28" S$(4) = "&h11&hf4&h11&h00&h00&hbf&hb0&h42&h79&h98&h3a" S$(5) = "&h00&h00&h00&h00&h00&h00&h00&h00&h00&h00&h00" S$(6) = "&h11&hf9&h10&h00&h00&hf1&hd2&h15&h47&h8a&hfb" S$(7) = "&h11&hc0&h00&h00&h00&h94&h33&h24&h00&hbb&h23" S$(8) = "&h11&hf4&h11&h00&h00&hbf&hb0&h42&h79&h98&h3b" S$(9) = "&h00&h06&h40&hf3&h34&h21&hd1&h00&hd0&h7f&h2c" S$(10) = "&h00&h02&h00&hf0&h47&ha0&h00&h00&h40&h78&h20" 10 CLS : n = 0: n2 = 0: n3 = 0: S = 0 20 SCREEN 13 40 DIM TK(100, 100) 45 LINE (120, 110)-(130, 120), , BF 60 GET (100, 108)-(176, 56), TK 90 DIM ALIEN(50, 50) 95 LINE (12, 5)-(20, 15), 10, BF: LINE (12, 10)-(7, 10), 10: LINE (7, 10)-(7, 5), 10 96 LINE (20, 10)-(25, 10), 10: LINE (25, 10)-(25, 5), 10 110 GET (0, 8)-(176, 56), ALIEN 122 DIM ALIEN2(50, 50) 123 LINE (12, 5)-(20, 15), 4, BF: LINE (12, 10)-(7, 10), 4: LINE (7, 10)-(7, 15), 4: LINE (20, 10)-(25, 10), 4: LINE (25, 10)-(25, 15), 4 124 GET (0, 8)-(176, 56), ALIEN2 125 CLS 130 PRINT " SPACE INVADERS!" 135 FOR z = 1 TO 5 137 na = 1: nb = 68 140 na2 = 200: nb2 = 74 148 start: 149 na = na + 1: IF na > 100 THEN GOTO t 150 na2 = na2 - 1: IF na2 < 100 THEN GOTO t 151 LINE (na, nb)-(na + 50, nb + 5), 4, BF 152 LINE (na2, nb2)-(na2 + 50, nb2 + 5), 1, BF 153 FOR TM = 1 TO 100: NEXT TM 155 LINE (na, nb)-(na + 50, nb + 5), 0, BF 156 LINE (na2, nb2)-(na2 + 50, nb2 + 5), 0, BF 157 GOTO start 158 t: 159 IF z = 1 THEN LOCATE 10, 14: COLOR 10: PRINT "GAME" 160 IF z = 2 THEN LOCATE 10, 14: COLOR 4: PRINT "CREATED" 161 IF z = 3 THEN LOCATE 10, 14: COLOR 10: PRINT " BY " 162 IF z = 4 THEN LOCATE 10, 14: COLOR 4: PRINT "KENNETH" 163 IF z = 5 THEN LOCATE 10, 14: COLOR 10: PRINT " GREEN " 164 NEXT z 165 FOR TM = 1 TO 6000: NEXT TM 166 LOCATE 10, 14: PRINT " " 167 COLOR 30 168 LOCATE 13, 1 169 PRINT "USE THE ARROW KEYS TO MOVE THE TANK": PRINT "LEFT AND RIGHT AND PRESS F": PRINT "TO FIRE." 170 PRINT "TO QUIT EARLY, PRESS ESCAPE." 171 PRINT "YOU CAN SHOOT EVEN IF THE": PRINT "TANK DISAPPEARS WHEN THE INVADERS ARE": PRINT "TOO CLOSE TO YOU." 175 PRINT "DO NOT HOLD ANY BUTTONS DOWN": PRINT "OR THE COMPUTER WILL BEEP AT YOU." 180 INPUT "PRESS TO START."; ST$ 185 d = .5 190 x = 100: y = 120: x2 = 12: y2 = 5: x5 = 80: y5 = 5: X4 = 140: Y4 = 5 195 CLS 196 IF x < 1 THEN x = 1 197 IF x > 230 THEN x = 230 200 LOCATE 1, 1: PRINT "SCORE "; S 205 LINE (x, y)-(x + 10, y + 10), , BF: LINE (x + 5, y)-(x + 5, y - 5) 210 IF n <> 1 THEN PUT (x2, y2), ALIEN, PSET 220 IF n2 <> 1 THEN PUT (x5, y5), ALIEN, PSET 230 IF n3 <> 1 THEN PUT (X4, Y4), ALIEN, PSET 300 A$ = INKEY$ 310 IF A$ = CHR$(0) + CHR$(77) THEN x = x + 20 320 IF A$ = CHR$(0) + CHR$(75) THEN x = x - 20 330 IF A$ = "F" OR A$ = "f" THEN 500 335 IF A$ = CHR$(27) THEN END 340 y2 = y2 + d: y5 = y5 + d: Y4 = Y4 + d 350 IF y2 > 100 THEN 1000 361 GOSUB SOUN 262 IF n <> 1 THEN PUT (x2, y2), ALIEN2, PSET 263 IF n2 <> 1 THEN PUT (x5, y5), ALIEN2, PSET 264 IF n3 <> 1 THEN PUT (X4, Y4), ALIEN2, PSET 368 y2 = y2 + d: y5 = y5 + d: Y4 = Y4 + d 400 FOR TM = 1 TO 2000: NEXT TM 485 GOTO 195 500 LINE (x + 5, y + 10)-(x + 5, 1): GOSUB SOUN: LINE (x + 5, y + 10)-(x + 5, 1), 0 510 IF x / x2 > .01 AND x / x2 < 1.8 AND n <> 1 THEN S = S + 100: n = 1: GOTO 2000 520 IF x / x5 > .7 AND x / x5 < 1.3 AND n2 <> 1 THEN S = S + 100: n2 = 1: GOTO 2000 530 IF x / X4 > .7 AND x / X4 < 1.3 AND n3 <> 1 THEN S = S + 100: n3 = 1: GOTO 2000 590 GOTO 195 1000 GOTO 2060 2000 IF n = 1 AND n2 = 1 AND n3 = 1 THEN 2050 2040 GOTO 195 2050 d = d + .5: n = 0: n2 = 0: n3 = 0 2052 IF d > 4 THEN d = 4: GOTO 2057 2056 GOTO 190 2057 CLS : PRINT " G O O D J O B ! !" 2058 PLAY "G5>C2p8C4B3": LOCATE 4, 1: PRINT "SCORE "; S 2060 INPUT "Would you like to play again(Y/N)."; eg$ 2070 CLOSE 2080 IF eg$ = "Y" OR eg$ = "y" THEN 10 2090 END SOUN: IF A$ = "f" OR A$ = "F" THEN snd = 3: voc = 1: FOR TM = 1 TO 400: NEXT TM: GOTO SRESET bks = 1: bkn = bkn + 1: IF bkn > 2 THEN bkn = 1 snd = bkn: voc = 1 SRESET: FOR in = 0 TO 50 OUT &H388, in: FOR i1 = 1 TO 6: p = INP(&H388): NEXT OUT &H389, 0: FOR i1 = 1 TO 35: p = INP(&H388): NEXT NEXT FOR in = 1 TO 44 STEP 4: A$ = MID$(v$(voc), in, 4) A = VAL(A$): b$ = MID$(S$(snd), in, 4) b = VAL(b$) OUT &H388, A: FOR i1 = 1 TO 6: p = INP(&H388): NEXT OUT &H389, b: FOR i1 = 1 TO 35: p = INP(&H388): NEXT NEXT RETURN