SCREEN 7, , 1, 0 ON KEY(1) GOSUB 78 ON KEY(2) GOSUB 1110 ON KEY(3) GOSUB 33 ON KEY(4) GOSUB 66 KEY(1) ON KEY(2) ON KEY(3) ON KEY(4) ON PALETTE 1, 8 PALETTE 2, 7 PALETTE 3, 15 PALETTE 4, 11 PALETTE 5, 9 PALETTE 6, 1 PALETTE 7, 4 PALETTE 8, 12 PALETTE 9, 1 PALETTE 10, 9 PALETTE 11, 11 PALETTE 12, 15 PALETTE 13, 7 PALETTE 14, 8 PALETTE 15, 0 DIM f3(24) DIM f4(24) DIM f5(24) DIM f6(24) DIM f7(24) DIM f1(24) DIM f2(24) DIM a(100) DIM b(100) DIM v(100) CLS GOSUB 72 GET (1, 1)-(12, 12), f1 CLS GOSUB 72 GET (1, 1)-(12, 12), f2 CLS GOSUB 72 GET (1, 1)-(12, 12), f3 CLS GOSUB 72 GET (1, 1)-(12, 12), f4 CLS GOSUB 72 GET (1, 1)-(12, 12), f5 CLS GOSUB 72 GET (1, 1)-(12, 12), f6 CLS GOSUB 72 GET (1, 1)-(12, 12), f7 CLS DIM x(36) DIM y(36) DIM xx(36) DIM yy(36) 11 a$ = "I N V A D E R" 9 SCREEN 7, , 1, 0 CLS PCOPY 1, 0 g% = 17 FOR a% = 1 TO 36 x(a%) = 159 + (INT(RND * 3)) y(a%) = 99 + (INT(RND * 3)) w = INT(RND * 17) xx(a%) = -8 + w w = INT(RND * 17) yy(a%) = -8 + w NEXT 17 CLS FOR a% = 1 TO 36 PSET (x(a%), y(a%)), 5 NEXT COLOR 3 LOCATE 13, 15 PRINT a$ a% = 1 SOUND (x(a%) + y(a%)) * 3 + 37, .023 COLOR 2 LOCATE 14, 16 IF a$ = "I N V A D E R" THEN PRINT "By: Jonathon Shelley 1996" ELSE PRINT "Playing: I N V A D E R" COLOR 6 LOCATE g%, 15 PRINT CHR$(17) LOCATE g%, 28 PRINT CHR$(16) COLOR 5 LOCATE 17, 16 PRINT "Instructions" LOCATE 18, 16 PRINT "Play Game" LOCATE 19, 16 PRINT "Quit" PCOPY 1, 0 FOR a% = 1 TO 36 x(a%) = x(a%) + xx(a%) y(a%) = y(a%) + yy(a%) IF x(a%) < 20 OR x(a%) > 300 THEN x(a%) = 159 + (INT(RND * 3)) y(a%) = 99 + (INT(RND * 3)) xx(a%) = -8 + (INT(RND * 17)) yy(a%) = -8 + (INT(RND * 17)) END IF IF y(a%) < 20 OR y(a%) > 180 THEN x(a%) = 159 + (INT(RND * 3)) y(a%) = 99 + (INT(RND * 3)) xx(a%) = -8 + (INT(RND * 17)) yy(a%) = -8 + (INT(RND * 17)) END IF NEXT ey$ = INKEY$ IF ey$ = CHR$(0) + "H" THEN GOSUB 18 IF ey$ = CHR$(0) + "P" THEN GOSUB 19 IF ey$ = CHR$(13) THEN ON g% - 16 GOSUB 78, 14, 1190 IF lw% = 1 THEN lw% = 0 GOTO 13 END IF SCREEN 7, , 1, 0 GOTO 17 18 IF g% < 18 THEN g% = 19 ELSE g% = g% - 1 RETURN 19 IF g% > 18 THEN g% = 17 ELSE g% = g% + 1 RETURN 14 lw% = 1 RETURN 13 SCREEN 7, , 1, 1 dx% = 2 sh% = 3 ip% = 3 sc% = 0 xw% = -6 y% = 159 mn% = 1 FOR C% = 1 TO 10 gw(C%) = 0 w(C%) = 200 NEXT 30 CLS COLOR 5 INPUT "Attackers (1-100)"; di% INPUT "Speed (1-100)"; qq INPUT "Assault Speed (1-100)"; fi% INPUT "Play To Level (1-100)"; nm% qq = (101 - qq) / 10 IF qq < 1 THEN qq = 1 fi% = 101 - fi% IF nm% > 100 OR nm% < 1 OR qq < 1 OR qq > 10 OR di% < 1 OR di% > 100 OR fi% > 100 OR fi% < 1 THEN GOTO 30 CLS FOR x% = 65 TO 80 IF x% = 72 OR x% = 73 THEN f% = 65 ELSE f% = x% LINE (x%, 1)-(x%, 200), f% - 65 LINE (x% + 160, 1)-(x% + 160, 200), 80 - f% SOUND x% ^ 2, .4 NEXT SCREEN 7, , 1, 2 COLOR 6 LOCATE 1, 1 PRINT "Score:" PRINT PRINT "Level:" PRINT PRINT "Bombs:" PRINT PRINT "Ships:" PUT (y%, 188), f1, XOR FOR s% = 1 TO di% GOSUB 1210 IF s% < 51 THEN ON s% GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 IF s% > 50 THEN ON s% - 50 GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 NEXT 370 FOR s% = 1 TO di% IF s% < 51 THEN ON s% GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 IF s% > 50 THEN ON s% - 50 GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 b(s%) = b(s%) + v(s%) IF a(s%) > y% - 7 AND a(s%) < y% + 7 THEN IF b(s%) > 188 THEN GOSUB 4000 END IF IF b(s%) > 188 AND a(s%) <> y% THEN sc% = sc% - 20 GOSUB 1210 END IF IF s% < 51 THEN ON s% GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 IF s% > 50 THEN ON s% - 50 GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 NEXT SOUND mn% * 2 + 22000, .023 s% = INT(RND * di%) + 1 IF INT(RND * fi%) + 1 = INT(RND * fi%) + 1 THEN GOSUB 1450 IF sc% > mn% * 100 THEN sh% = sh% + INT(mn% / 50) + 1 ip% = ip% + INT(mn% / 50) + 1 mn% = mn% + 1 sc% = 0 qq = qq - .1 IF qq < .1 THEN qq = .1 END IF IF mn% = nm% THEN GOTO 6 COLOR 5 LOCATE 2, 1 PRINT " "; sc%; " " PRINT PRINT " "; mn% PRINT PRINT " "; sh% PRINT PRINT " "; ip% FOR dx& = 1 TO sp& NEXT ey$ = INKEY$ IF ey$ = CHR$(0) + "H" THEN GOSUB 670 IF ey$ = CHR$(0) + "K" THEN GOSUB 950 IF ey$ = CHR$(0) + "M" THEN GOSUB 1030 IF ey$ = CHR$(0) + "P" THEN GOSUB 1270 DO UNTIL INKEY$ = "" LOOP PCOPY 1, 2 C% = 0 42 IF C% = 10 THEN GOTO 158 ELSE C% = C% + 1 IF w(C%) > 176 THEN IF w(C%) <> 200 THEN PUT (u(C%), w(C%)), f2, XOR w(C%) = 200 END IF GOTO 42 END IF PUT (u(C%), w(C%)), f2, XOR w(C%) = w(C%) + 12 SOUND w(C%) ^ 1.5 + 37, .023 IF w(C%) > 176 THEN IF u(C%) = y% + 6 AND xw% = 6 THEN GOTO 10 IF u(C%) = y% - 6 AND xw% = -6 THEN GOTO 10 IF u(C%) = y% THEN GOTO 10 END IF 12 PUT (u(C%), w(C%)), f2, XOR GOTO 42 10 sc% = sc% - 30 GOSUB 1740 GOTO 12 158 PUT (y%, 188), f1, XOR y% = y% + xw% IF y% < 81 THEN y% = 81 IF y% > 213 THEN y% = 213 PUT (y%, 188), f1, XOR C% = 0 41 IF C% = 5 THEN GOTO 370 ELSE C% = C% + 1 IF gw(C%) < 12 THEN IF gw(C%) <> 0 THEN PUT (tu(C%), gw(C%)), f2, XOR gw(C%) = 0 END IF GOTO 41 END IF PUT (tu(C%), gw(C%)), f2, XOR gw(C%) = gw(C%) - 12 SOUND gw(C%) ^ 2 + 36, .023 PUT (tu(C%), gw(C%)), f2, XOR FOR s% = 1 TO di% IF gw(C%) < b(s%) AND tu(C%) = a(s%) THEN sc% = sc% + 50 IF s% < 51 THEN ON s% GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 IF s% > 50 THEN ON s% - 50 GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 GOSUB 4282 GOSUB 1210 IF s% < 51 THEN ON s% GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 IF s% > 50 THEN ON s% - 50 GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 END IF NEXT GOTO 41 670 zh% = 0 672 IF zh% = 5 THEN RETURN ELSE zh% = zh% + 1 IF gw(zh%) = 0 THEN sc% = sc% - 10 tu(zh%) = y% gw(zh%) = 176 PUT (tu(zh%), gw(zh%)), f2, XOR zh% = 5 END IF GOTO 672 950 xw% = -6 RETURN 1030 xw% = 6 RETURN 1110 PCOPY 1, 0 SCREEN 7, , 0, 0 COLOR 5 g% = 10 LOCATE 10, 16 PRINT "RESUME" LOCATE 11, 16 PRINT "NEW GAME" LOCATE 12, 16 PRINT "QUIT" COLOR 6 LOCATE g%, 15 PRINT CHR$(17) LOCATE g%, 24 PRINT CHR$(16) 1111 ey$ = INKEY$ IF ey$ = CHR$(13) THEN GOTO 1114 IF ey$ = CHR$(0) + "H" THEN GOSUB 1112 IF ey$ = CHR$(0) + "P" THEN GOSUB 1113 GOTO 1111 1112 LOCATE g%, 15 PRINT " " LOCATE g%, 24 PRINT " " IF g% < 11 THEN g% = 12 ELSE g% = g% - 1 LOCATE g%, 15 PRINT CHR$(17) LOCATE g%, 24 PRINT CHR$(16) RETURN 1113 LOCATE g%, 15 PRINT " " LOCATE g%, 24 PRINT " " IF g% > 11 THEN g% = 10 ELSE g% = g% + 1 LOCATE g%, 15 PRINT CHR$(17) LOCATE g%, 24 PRINT CHR$(16) RETURN 1114 ON g% - 10 GOTO 11, 1190 SCREEN 7, , 1, 1 RETURN 1190 SYSTEM 1210 b(s%) = 2 a(s%) = INT(RND * 22) * 6 + 81 v(s%) = RND * 10 / qq RETURN 1270 IF sh% < 1 THEN RETURN ELSE sh% = sh% - 1 sc% = sc% + di% * 10 FOR s% = 1 TO di% GOSUB 4282 IF s% < 51 THEN ON s% GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 IF s% > 50 THEN ON s% - 50 GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 GOSUB 1210 IF s% < 51 THEN ON s% GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 IF s% > 50 THEN ON s% - 50 GOSUB 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 NEXT RETURN 1450 h% = 0 1492 IF h% = 10 THEN RETURN ELSE h% = h% + 1 IF w(h%) = 200 THEN u(h%) = a(s%) w(h%) = b(s%) PUT (u(h%), w(h%)), f2, XOR h% = 10 END IF GOTO 1492 1740 ip% = ip% - 1 KEY(1) STOP KEY(2) STOP PCOPY 1, 0 SCREEN 7, , 0, 0 FOR x = 1 TO 100 LINE (y% + 6, 194)-(RND * 160 + 80, RND * 12 + 188), INT(RND * 2) + 7 SOUND RND * 80 + 40, .2 NEXT IF ip% < 0 THEN GOTO 7 SCREEN 7, , 1, 1 sc% = sc% - 40 PUT (y%, 188), f1, XOR y% = 159 xw% = -6 PUT (y%, 188), f1, XOR KEY(1) ON KEY(2) ON RETURN 4000 GOSUB 1740 GOSUB 1210 RETURN 1 PUT (a(s%), b(s%)), f3, XOR RETURN 2 PUT (a(s%), b(s%)), f4, XOR RETURN 3 PUT (a(s%), b(s%)), f5, XOR RETURN 4 PUT (a(s%), b(s%)), f6, XOR RETURN 5 PUT (a(s%), b(s%)), f7, XOR RETURN 4282 KEY(1) STOP KEY(2) STOP PCOPY 1, 0 SCREEN 7, , 0, 0 FOR x% = 1 TO 24 LINE (a(s%) + 6, b(s%) + 3)-(RND * 20 - 4 + a(s%), RND * 30 - 18 + b(s%)), INT(RND * 2) + 7 SOUND RND * 120 + 40, .023 NEXT SCREEN 7, , 1, 1 KEY(1) ON KEY(2) ON RETURN 72 FOR x% = 1 TO 6 FOR y% = 1 TO 12 READ z% PSET (x%, y%), z% PSET (13 - x%, y%), z% NEXT NEXT RETURN DATA 0,0,0,0,1,1,2,1,1,0,0,0 DATA 0,0,0,0,0,0,1,3,2,1,1,0 DATA 0,0,0,0,0,0,0,1,3,2,2,1 DATA 0,1,1,0,0,1,2,3,2,3,1,7 DATA 1,2,3,1,2,2,4,5,6,5,7,8 DATA 0,0,1,3,3,4,5,6,5,2,1,7 DATA 0,0,0,0,0,0,0,0,0,0,0,0 DATA 0,0,0,0,0,0,0,0,0,0,0,0 DATA 0,0,0,0,0,0,0,0,0,0,0,0 DATA 0,0,0,0,6,5,5,6,0,0,0,0 DATA 0,0,6,5,4,4,4,4,5,6,0,0 DATA 0,0,0,0,6,5,5,6,0,0,0,0 DATA 0,0,0,0,0,0,0,0,0,0,0,0 DATA 0,0,6,5,6,0,0,6,6,0,0,0 DATA 0,6,5,4,8,7,0,6,5,6,0,0 DATA 0,0,1,3,6,0,6,5,4,5,6,0 DATA 0,1,2,1,0,1,1,2,3,4,5,6 DATA 0,0,1,2,1,2,2,3,4,5,6,6 DATA 0,0,6,0,0,0,0,0,0,0,6,0 DATA 0,6,5,5,6,0,0,0,0,6,5,0 DATA 0,6,0,0,5,6,0,0,6,5,6,6 DATA 6,5,5,0,0,5,6,6,5,6,0,6 DATA 0,6,0,5,4,5,4,4,5,0,0,0 DATA 0,0,0,0,6,4,5,5,6,5,6,0 DATA 0,0,0,0,6,0,0,0,0,0,0,0 DATA 0,0,0,6,5,6,0,0,0,0,0,0 DATA 0,0,6,5,4,4,5,6,6,0,0,0 DATA 7,5,0,0,5,5,4,5,5,1,0,0 DATA 0,7,8,5,6,6,5,4,4,3,2,1 DATA 0,6,5,5,5,6,5,6,0,0,1,0 DATA 0,0,0,0,5,6,0,0,0,0,0,0 DATA 0,0,0,6,4,4,4,0,0,0,0,0 DATA 0,0,7,7,6,5,5,4,4,0,0,0 DATA 0,7,8,5,5,5,5,5,5,4,0,0 DATA 0,0,0,0,7,7,6,6,5,5,4,0 DATA 0,0,0,7,8,5,5,5,6,6,5,5 DATA 0,0,5,6,0,0,0,0,0,0,0,0 DATA 0,6,0,5,5,6,6,5,5,6,0,0 DATA 5,5,6,0,6,5,5,5,4,5,6,0 DATA 0,6,5,5,5,5,4,4,3,4,5,0 DATA 0,0,0,6,5,6,5,5,4,5,6,0 DATA 0,0,6,5,6,0,6,5,5,6,0,0 6 a$ = "You've Won!" GOTO 9 7 a$ = "You've Died!" GOTO 9 78 SCREEN 7, , 0, 0 CLS LOCATE 2, 2 COLOR 8 PRINT "INVADER: Instructions" PRINT PRINT COLOR 7 PRINT " F1 - Displays this help menu." PRINT PRINT " F2 - Brings up Quit/NewGame menu." PRINT PRINT " F3 - Slows down game." PRINT PRINT " F4 - Speeds up game." PRINT PRINT "   - Moves your ship left/right." PRINT PRINT "  - Shoots lasers." PRINT PRINT "  - Activates bomb." PRINT COLOR 6 LOCATE 22, 15 PRINT CHR$(17); " "; CHR$(16) COLOR 5 LOCATE 22, 16 PRINT "RESUME" COLOR 1 LOCATE 20, 2 PRINT "Current game speed:" DO UNTIL INKEY$ = CHR$(13) LOCATE 20, 21 PRINT 100 - INT(sp& / 1000); "% " LOOP SCREEN 7, , 1, 2 RETURN 33 IF sp& > 99999 THEN sp& = 100000 ELSE sp& = sp& + 1000 RETURN 66 IF sp& < 1001 THEN sp& = 2 ELSE sp& = sp& - 1000 RETURN