mirror of
https://github.com/inexorabletash/jsbasic.git
synced 2025-01-02 18:29:49 +00:00
42 lines
2.6 KiB
Plaintext
42 lines
2.6 KiB
Plaintext
10 GOTO 100: REM SPACE ATTACK! BY ALAN RATLIFF, (C) 1979 & 2020
|
|
15 REM ADAPTED FOR "Applesoft BASIC in Javascript"
|
|
20 T = SCRN( U,V) = W: COLOR= RC: PLOT U,V
|
|
25 IF U = E AND V = E THEN PRINT B$;:BR = BR - 1: VTAB 22: HTAB 40: PRINT BR;: POKE 49233,0: FOR T = 1 TO 800: NEXT: POKE 49232,0: ON 1 + NOT BR GOTO 155,220
|
|
30 IF T THEN COLOR= W: PLOT U,V: GOTO 190
|
|
40 X = INT ( PDL(Z) * D):Y = INT ( PDL(I) * D2): IF Y > 38 THEN Y = 38
|
|
50 IF X < > P OR Y < > Q THEN COLOR= Z: GOSUB 95:P = X:Q = Y: GOSUB 90: IF SCRN( U,V) = W GOTO 190
|
|
55 L = (L + I) * (L < H): IF L GOTO 40
|
|
60 B = (R - ( ABS (E - U) < R)) * SGN (E - U):C = (R - (ABS (E - V) < R)) * SGN (E - V)
|
|
70 IF B AND C THEN B = ( ABS ((E - V) / (E - U)) < J) * B:C = ( ABS ((E - U) / (E - V)) < J) * C
|
|
80 COLOR= Z: PLOT U,V: U = U + B:V = V + C: GOTO 20
|
|
90 COLOR= G: PLOT E,E: COLOR= W
|
|
95 HLIN P,P + I AT Q: HLIN P,P + I AT Q + I: RETURN
|
|
100 PR# 0: TEXT : HOME : VTAB 2: HTAB 13
|
|
105 INVERSE : PRINT " SPACE ATTACK! ": NORMAL : PRINT : HTAB 13: PRINT "BY ALAN RATLIFF"
|
|
110 VTAB 7: PRINT " HIT THE ENEMY MISSILES BEFORE THEY HIT": PRINT " YOUR GREEN BASE---WATCH OUT FOR THE": PRINT " FAST BLUE ONES! (WHICH SCORE DOUBLE)"
|
|
115 VTAB 11: PRINT " THE FARTHER FROM BASE YOU HIT THE": PRINT " MISSILES, THE MORE YOU SCORE."
|
|
120 VTAB 14: PRINT " GET A BONUS BASE EVERY 2000 POINTS!"
|
|
122 PRINT " (BUT THE MISSILES COME FASTER....": HTAB 9: PRINT "AND SCORE MORE POINTS!)"
|
|
125 VTAB 19: PRINT "THE GAME ENDS WHEN THE MISSILES HAVE HITFIVE BASES (PLUS BONUS BASES)."
|
|
130 VTAB 23: PRINT "PRESS THE [HOME KEY] TO BEGIN..."
|
|
135 IF PEEK (49249) < 128 GOTO 135
|
|
140 Z = 0:I = 1:D = 1 / 6.7:D2 = 1 / 5.5:G = 12:W = 15:E = 20:J = 2:F = 58.5:B$ = CHR$ (7)
|
|
142 HOME : VTAB 11: HTAB 19: PRINT "BOOM!"
|
|
145 GR : HOME :S = 0:M = 5:H = 80:P = INT (PDL (Z) * D):Q = INT ( PDL (I) * D2): IF Q > 38 THEN Q = 38
|
|
150 VTAB 22: PRINT "SCORE: 0" TAB( 28)"BASES LEFT: 5";:BR = 5
|
|
152 R = RND ( - PEEK (79) * 999 - PEEK (78))
|
|
155 GOSUB 90
|
|
165 VTAB 22: HTAB 15: PRINT SPC( 10)
|
|
170 R = INT ( RND (I) * 156):U = (F - ABS (R - F)) * (R < 117): IF U > 39 THEN U = 39
|
|
175 V = (F - ABS (R - 97.5)) * (R > 39): IF V > 39 THEN V = 39
|
|
185 R = INT ( RND (I) * 1.1) + I:RC = 12 - R * 3: GOTO 20
|
|
190 U = U - E:V = V - E:SC = INT ( SQR (U * U + V * V) - I) * R * M
|
|
195 S = S + SC: VTAB 22: HTAB 8: PRINT S;B$
|
|
205 IF INT (S / 2E3) = INT ((S - SC) / 2E3) GOTO 165
|
|
210 FLASH : VTAB 22: HTAB 15: PRINT "BONUS BASE"B$;: NORMAL
|
|
215 BR = BR + I: HTAB 40: PRINT BR;: H = INT (H * .8):M = M + I: GOTO 170
|
|
220 PRINT "PRESS [HOME KEY] TO PLAY AGAIN,": PRINT "OR ANY OTHER KEY TO EXIT.";
|
|
225 IF PEEK (49249) > 127 GOTO 145
|
|
230 IF PEEK (49152) < 128 GOTO 225
|
|
235 POKE 49168,0: HTAB I: VTAB 23: CALL - 958
|