'===========================================================================
' Subject: FIGHTER ATTACK!                    Date: 06-11-96 (18:55)       
'  Author: Brian Hof/Connor Reynolds          Code: QB, QBasic, PDS        
'  Origin: dean@marshallnet.com             Packet: GAMES.ABC
'===========================================================================
BEGIN:
CLS
COLOR 12: PRINT "Micro"; : COLOR 11: PRINT "Hof"; : COLOR 14: PRINT " presents..."
COLOR 10
PRINT
PRINT "Fighter Attack!  "; : COLOR 2: PRINT "v1.0"; : COLOR 9: PRINT "     by"; : COLOR 11: PRINT " Brian Hof"
COLOR 10
PRINT "---------------------"
PRINT
COLOR 7
PRINT "    There you are, on your starbase, when WHAM!  Here comes an attack of TIE"
PRINT "fighters!  You hop into your trusty X-Wing and take off to destroy the little"
PRINT "boogers."
PRINT "    An endless stream of TIE's will fly toward you.  Navigate around, and"
PRINT "fire at the suckers, and if you're lucky, you'll hit one.  Be careful, they"
PRINT "chase you around no matter where you move to.  And, LOOK OUT for their fire!"
PRINT "Firing a Proton Torpedo will stop the TIE fighters for a short amount of time,"
PRINT "and disarm them for awhile."
PRINT "    At random time intervals, power-ups will appear near you.  Here's a list"
PRINT "of their functions :"
PRINT
COLOR 9
PRINT ""; : COLOR 15: PRINT " ="; : COLOR 9: PRINT " Shields Up"; : COLOR 4: PRINT "     "; : COLOR 15: PRINT "= "; : COLOR 4
PRINT "Fire Power Up  "; : COLOR 14: PRINT "  í"; : COLOR 15: PRINT " ="; : COLOR 14
PRINT " Score + 10"; : COLOR 10: PRINT "    +"; : COLOR 15: PRINT " ="; : COLOR 10: PRINT " Proton Torpedo"
PRINT
COLOR 14
PRINT " ARROW KEYS = Navigate        ESCAPE = Quit                "
PRINT " SPACE BAR  = Fire Blaster    ENTER  = Fire P.T.    P = Pause"
PRINT
PRINT
COLOR 9: PRINT "May the Force be with you.  Watch your shields!  "; : COLOR 8: PRINT " Hit a key..."
DO: B$ = INKEY$: LOOP UNTIL NOT B$ = ""
CLS
COLOR 6
PRINT "How many TIE's do you want coming at you at a time?"; : COLOR 14: PRINT " (3-15)"
LOCATE 23, 1
COLOR 8
PRINT "Programmed and compiled using"; : COLOR 7: PRINT " QuickBasic"; : COLOR 8: PRINT " v4.5."
PRINT "TIE Fighters, X-Wings, and the Force are copyrights of"; : COLOR 7: PRINT " Lucasfilm, Ltd"; : COLOR 8: PRINT ".";
LOCATE 3, 1
COLOR 9
PRINT "The more, the merrier!"
LOCATE 2, 1
COLOR 5
PRINT "Number of fighters "; : COLOR 13: PRINT "[ENTER=10]"; : COLOR 5: PRINT " : ";
COLOR 15
INPUT "", MAX
IF MAX > 15 THEN MAX = 15
IF MAX = 1 OR MAX = 2 THEN MAX = 3
IF MAX < 1 THEN MAX = 10
LOCATE 5, 1
COLOR 2
PRINT "Select Skill Level :"
COLOR 10
PRINT "------------------"
COLOR 12
PRINT "(1)"; : COLOR 4: PRINT " Novice"
COLOR 12
PRINT "(2)"; : COLOR 4: PRINT " Amateur"
COLOR 12
PRINT "(3)"; : COLOR 4: PRINT " Expert"
PRINT
STARTAGAIN:
DO: B$ = INKEY$: LOOP UNTIL B$ = "1" OR B$ = "2" OR B$ = "3"
SKILL = VAL(B$)
SCORE = 0
KILLS = 0
SHIELDS = 10
IF SKILL = 1 THEN SHIELDFACT = 2
IF SKILL = 2 THEN SHIELDFACT = 1
IF SKILL = 3 THEN SHIELDFACT = .5
IF SKILL = 1 THEN LASERFACT = 20
IF SKILL = 2 THEN LASERFACT = 15
IF SKILL = 3 THEN LASERFACT = 10
IF SKILL = 1 THEN PROTONS = 3
IF SKILL = 2 THEN PROTONS = 2
IF SKILL = 3 THEN PROTONS = 1
IF SKILL = 1 THEN LASER = 75
IF SKILL = 2 THEN LASER = 60
IF SKILL = 3 THEN LASER = 50
COLOR 5
PRINT "Skill level"; SKILL; " :"
COLOR 13
PRINT "-------------"
COLOR 14
PRINT "Initial Fire Power ="; : COLOR 9: PRINT LASER; : COLOR 14: PRINT "   Initial P.T.'s  ="; : COLOR 9: PRINT PROTONS
COLOR 14
PRINT "Fire Power Up =     "; : COLOR 9: PRINT LASERFACT; : COLOR 14: PRINT "   Shield Power Up ="; : COLOR 9: PRINT SHIELDFACT
COLOR 8
PRINT
PRINT "Accept? "; : COLOR 15: PRINT "["; : COLOR 9: PRINT "Y"; : COLOR 14: PRINT "/"; : COLOR 9: PRINT "N"; : COLOR 15: PRINT "]";
DO: B$ = INKEY$: B$ = UCASE$(B$): LOOP UNTIL B$ = "Y" OR B$ = "N"
IF B$ = "N" THEN
  LOCATE 11, 1
  PRINT STRING$(79, " ");
  LOCATE 12, 1
  PRINT STRING$(79, " ");
  LOCATE 13, 1
  PRINT STRING$(79, " ");
  LOCATE 14, 1
  PRINT STRING$(79, " ");
  LOCATE 16, 1
  PRINT STRING$(79, " ");
  LOCATE 11, 1
  GOTO STARTAGAIN
END IF
CLS
LOCATE 23, 1
PRINT STRING$(80, " ");
LOCATE 23, 1
COLOR 14, 1
PRINT " Shields"; : COLOR 15: PRINT " :"; : COLOR 8: PRINT " ["; : COLOR 11: PRINT "()()()()()()()()()()"; : COLOR 8: PRINT "]"; : COLOR 14: PRINT "  Fire Power ";
COLOR 15: PRINT ":"; : COLOR 8: PRINT " ["; : COLOR 11: PRINT "50"; : COLOR 8: PRINT "] "; : COLOR 14: PRINT " Proton Torpedoes"; : COLOR 15: PRINT " : "; : COLOR 8: PRINT "["; : COLOR 11: PRINT "+++"; : COLOR 8: PRINT "]  "
COLOR 0
PRINT "Ä" + STRING$(78, "Ä") + "Ä";
LOCATE 25, 1
PRINT STRING$(80, " ");
LOCATE 25, 1
COLOR 15
PRINT " Score"; : COLOR 14: PRINT " : "; : COLOR 8: PRINT "[";
COLOR 12: PRINT "0"; : COLOR 8: PRINT "]"; : COLOR 15: PRINT "       Kills";
COLOR 14: PRINT " :"; : COLOR 8: PRINT " ["; : COLOR 12: PRINT "0";
COLOR 8: PRINT "]            "; : COLOR 12, 1: PRINT "                             Micro"; : COLOR 11: PRINT "Hof";
COLOR , 0
GOSUB RESCORE

RANDOMIZE TIMER
MAXFIR = 10
REDIM SX(40)
REDIM SY(40)
REDIM SC(40)
REDIM SCHAR$(40)
REDIM HITS(MAX)
REDIM TIEx(MAX)
REDIM TIEy(MAX)
REDIM FIRE$(MAX)
REDIM Fx(MAX)
REDIM Fy(MAX)
REDIM TFBACK(MAX)
REDIM TFBACKCOL(MAX)
REDIM FIREY$(MAXFIR)
REDIM YFx(MAXFIR)
REDIM YFy(MAXFIR)
REDIM FBACK(MAXFIR)
REDIM FBACKCOL(MAXFIR)
REDIM TBACK(MAX)
REDIM TBACKCOL(MAX)
FOR I = 1 TO MAXFIR
FIREY$(I) = "NO"
NEXT I
Y = 11
X = 1

FOR I = 1 TO 40
SY(I) = INT(RND * 22) + 1
SX(I) = INT(RND * 79) + 1
SC(I) = INT(RND * 3) + 1
SCHAR = INT(RND * 3)
IF SCHAR = 1 THEN SCHAR$(I) = "."
IF SCHAR = 2 THEN SCHAR$(I) = "+"
IF SCHAR = 3 THEN SCHAR$(I) = "ù"
IF SC(I) = 1 THEN SC(I) = 8
IF SC(I) = 2 THEN SC(I) = 7
IF SC(I) = 3 THEN SC(I) = 15
COLOR SC(I): LOCATE SY(I), SX(I): PRINT SCHAR$(I);
NEXT I

YBACK = SCREEN(11, 1, 0)
YBACKCOL = SCREEN(11, 1, 1)

FOR I = 1 TO MAX
TIEx(I) = INT(RND * 50) + 30
TIEy(I) = INT(RND * 22) + 1
TIEF = INT(RND * 2)
IF TIEF = 1 THEN FIRE$(I) = "YES"
IF TIEF = 0 THEN FIRE$(I) = "NO"
TBACK(I) = SCREEN(TIEy(I), TIEx(I), 0)
TBACKCOL(I) = SCREEN(TIEy(I), TIEx(I), 1)
COLOR 8
LOCATE TIEy(I), TIEx(I): PRINT "è";
NEXT I

PLAY "MF"
LOCATE Y, X: COLOR 7: PRINT "X";
PX = 1
PY = 1
WAITTILL = TIMER
PROTONOUT$ = "NO"
CRAP = TIMER

DO
IF TIMER > CRAP + 30 THEN
  FOR I = 1 TO 40
  COLOR SC(I)
  LOCATE SY(I), SX(I)
  PRINT SCHAR$(I);
  NEXT I
  CRAP = TIMER
END IF
IF TIMER > WAITTILL + 10 THEN
  WAITTILL = TIMER
  PLAY "L32A"
  LOCATE PY, PX: PRINT " ";
PICKOVER:
  PY = INT(RND * 22) + 1
  PX = INT(RND * 10) + 1
  IF CHR$(SCREEN(PY, PX)) = "+" OR CHR$(SCREEN(PY, PX)) = "." OR CHR$(SCREEN(PY, PX)) = "ù" THEN GOTO PICKOVER
  IF Y = PY AND X = PX THEN GOTO PICKOVER
  TYP = INT(RND * 10) + 1
  IF LASER < 10 THEN
    COLOR 4
    LOCATE PY, PX: PRINT "";
    GOTO SKIPDAT
  END IF
  IF SHIELDS < 1 THEN
    COLOR 9
    LOCATE PY, PX: PRINT "";
    GOTO SKIPDAT
  END IF
  IF TYP = 2 OR TYP = 5 OR TYP = 9 THEN
    COLOR 4
    LOCATE PY, PX: PRINT "";
  END IF
  IF TYP = 1 OR TYP = 7 OR TYP = 6 THEN
    COLOR 9
    LOCATE PY, PX: PRINT "";
  END IF
  IF TYP = 3 OR TYP = 8 THEN
    COLOR 14
    LOCATE PY, PX: PRINT "í";
  END IF
  IF TYP = 4 OR TYP = 10 THEN
    COLOR 10
    LOCATE PY, PX: PRINT "+";
  END IF
SKIPDAT:
ZZ = 0
END IF
FOR I = 1 TO MAX
 B$ = INKEY$

 IF UCASE$(B$) = "P" THEN
   COLOR 31, 1
   LOCATE 25, 47: PRINT "[ PAUSED ]";
   DO: G$ = INKEY$: LOOP UNTIL G$ <> ""
   LOCATE 25, 47
   PRINT "            ";
   COLOR 7, 0
 END IF
 IF B$ = CHR$(0) + "K" OR B$ = CHR$(0) + "M" OR B$ = CHR$(0) + "H" OR B$ = CHR$(0) + "P" THEN
   LOCATE Y, X
   COLOR YBACKCOL
   PRINT CHR$(YBACK);
   IF B$ = CHR$(0) + "K" THEN X = X - 1
   IF B$ = CHR$(0) + "M" THEN X = X + 1
   IF B$ = CHR$(0) + "H" THEN Y = Y - 1
   IF B$ = CHR$(0) + "P" THEN Y = Y + 1
   IF X = 0 THEN X = 1
   IF Y = 0 THEN Y = 1
   IF X = 21 THEN X = 20
   IF Y = 23 THEN Y = 22
   YBACK = SCREEN(Y, X, 0)
   YBACKCOL = SCREEN(Y, X, 1)
   IF YBACK = 232 AND PROTONOUT$ = "NO" THEN
     SHIELDS = SHIELDS - 1
     GOSUB RESCORE
     YBACK = 32
     YBACKCOL = 7
   END IF
   IF YBACK = 237 THEN
     IF NOT SCORE + 10 > 9999999 THEN SCORE = SCORE + 10
     GOSUB RESCORE
     YBACK = 32
     PLAY "L32C"
   END IF
   IF YBACK = 3 THEN
     LASER = LASER + LASERFACT
     IF LASER > 100 THEN LASER = 100
     GOSUB RESCORE
     YBACK = 32
     PLAY "L32C"
   END IF
   IF YBACK = 15 THEN
     SHIELDS = SHIELDS + SHIELDFACT
     IF SHIELDS > 10 THEN SHIELDS = 10
     GOSUB RESCORE
     YBACK = 32
     PLAY "L32C"
   END IF
   IF YBACK = ASC("+") AND YBACKCOL = 10 THEN
     PROTONS = PROTONS + 1
     GOSUB RESCORE
     IF PROTONS = 4 THEN PROTONS = 3
     YBACK = 32
     PLAY "L32C"
   END IF
   IF YBACK = ASC("X") OR YBACK = ASC("Í") OR YBACK = ASC("=") THEN YBACK = 32
   LOCATE Y, X
   COLOR 7
   PRINT "X";
 END IF
 IF B$ = CHR$(27) THEN GOTO QUIT
 IF B$ = CHR$(13) AND PROTONS > 0 AND PROTONOUT$ = "NO" THEN
   PROTONOUT$ = "YES"
   YYY = TIMER
   PROTONS = PROTONS - 1
   IF PROTONS < 0 THEN PROTONS = 0
   GOSUB RESCORE
 END IF
 IF B$ = CHR$(32) AND LASER > 0 THEN
   FOR G = 1 TO MAXFIR
   IF FIREY$(G) = "NO" THEN
     FIREY$(G) = "YES"
     LASER = LASER - 1
     GOSUB RESCORE
     YFx(G) = X + 1
     YFy(G) = Y
     FBACK(G) = SCREEN(YFy(G), YFx(G), 0)
     FBACKCOL(G) = SCREEN(YFy(G), YFx(G), 1)
   IF FBACK(G) = 205 THEN FBACK(G) = 32: FBACKCOL(G) = 7
   IF FBACK(G) = 232 THEN
    FOR U = 1 TO MAX
      IF TIEy(U) = YFy(G) AND TIEx(U) = YFx(G) THEN GOTO OUTTOF22
    NEXT U
OUTTOF22:
    LOCATE TIEy(U), TIEx(U)
    COLOR TBACKCOL(U)
    PRINT CHR$(TBACK(U));
    TIEy(U) = INT(RND * 22) + 1
    TIEx(U) = 80
    TBACK(U) = 32
    TBACKCOL(U) = 7
    IF FIRE$(U) = "YES" THEN
      LOCATE Fy(U), Fx(U)
      COLOR TFBACKCOL(U)
      PRINT CHR$(TFBACK(U));
    END IF
    Fy(U) = TIEy(U)
    Fx(U) = TIEx(U)
    YG = INT(RND * 2)
    FIRE$(U) = "NO"
    IF YG = 1 AND PROTONOUT$ = "NO" THEN FIRE$(U) = "YES"
    YFy(G) = 0
    YFx(G) = 0
    FIREY$(G) = "NO"
    KILLS = KILLS + 1
    IF NOT SCORE + 10 > 9999999 THEN SCORE = SCORE + 10
    GOSUB RESCORE
   END IF
     GOTO SHOTIT
   END IF
   NEXT G
 END IF
SHOTIT:
 IF PROTONOUT$ = "YES" THEN
   IF TIMER > YYY + 10 THEN PROTONOUT$ = "NO"
 END IF
IF PROTONOUT$ = "YES" THEN GOTO PROTONPAUSE
  LOCATE TIEy(I), TIEx(I)
  COLOR TBACKCOL(I), 0
  PRINT CHR$(TBACK(I));
  TIEx(I) = TIEx(I) - 1
  IF INT(RND * 15) + 1 = 5 THEN
    IF Y < TIEy(I) THEN TIEy(I) = TIEy(I) - 1
    IF Y > TIEy(I) THEN TIEy(I) = TIEy(I) + 1
  END IF
  IF TIEy(I) = 0 THEN TIEy(I) = 1
  IF TIEy(I) = 23 THEN TIEy(I) = 22
  IF TIEx(I) = 0 THEN
    TIEx(I) = 80
    TIEy(I) = INT(RND * 22) + 1
    YG = INT(RND * 2)
    IF YG = 0 THEN FIRE$(I) = "YES"
    IF YG = 1 THEN FIRE$(I) = "NO"
    Fy(I) = TIEy(I)
    Fx(I) = TIEx(I)
  END IF
  COLOR 8
  TBACK(I) = SCREEN(TIEy(I), TIEx(I), 0)
  TBACKCOL(I) = SCREEN(TIEy(I), TIEx(I), 1)
  IF TBACK(I) = 232 OR TBACK(I) = 205 THEN TBACK(I) = 32: TBACKCOL(I) = 0
  IF TBACK(I) = ASC("X") THEN
    TBACK(I) = 32
    SHIELDS = SHIELDS - 1
    IF SHIELDS < 0 THEN GOTO DEAD
    SCORE = SCORE - 50
    IF SCORE < 0 THEN SCORE = 0
    GOSUB RESCORE
  END IF
  IF TBACK(I) = ASC("=") THEN
    U = 0
    FOR U = 1 TO MAXFIR
      IF TIEy(I) = YFy(U) AND TIEx(I) = YFx(U) THEN GOTO OUTTOF
    NEXT U
OUTTOF:
    LOCATE YFy(U), YFx(U)
    COLOR FBACKCOL(U)
    PRINT CHR$(FBACK(U));
    YFy(U) = 0
    YFx(U) = 0
    FIREY$(U) = "NO"
    TIEy(I) = INT(RND * 22) + 1
    TIEx(I) = 80
    TBACK(I) = 32
    TBACKCOL(I) = 7
    IF FIRE$(I) = "YES" THEN
      LOCATE Fy(I), Fx(I)
      COLOR TFBACKCOL(I)
      PRINT CHR$(TFBACK(I));
    END IF
    Fy(I) = TIEy(I)
    Fx(I) = TIEx(I)
    YG = INT(RND * 2)
    FIRE$(I) = "NO"
    IF YG = 1 AND PROTONOUT$ = "NO" THEN FIRE$(I) = "YES"
    KILLS = KILLS + 1
    IF NOT SCORE + 10 > 9999999 THEN SCORE = SCORE + 10
    GOSUB RESCORE
    GOTO SHOTONE
  END IF
  COLOR 8
  LOCATE TIEy(I), TIEx(I): PRINT "è";
SHOTONE:
PROTONPAUSE:
NEXT I
FOR I = 1 TO MAX
  IF FIRE$(I) = "YES" AND Fy(I) = 0 OR FIRE$(I) = "YES" AND Fx(I) = 0 THEN
    Fy(I) = TIEy(I)
    Fx(I) = TIEx(I)
    TFBACK(I) = 32
    TFBACKCOL(I) = 8
  END IF
NEWSHOT:
  IF FIRE$(I) = "NO" THEN GOTO SKIPFIRE
  LOCATE Fy(I), Fx(I): COLOR TFBACKCOL(I): PRINT CHR$(TFBACK(I));
  Fx(I) = Fx(I) - 1
  IF Fx(I) = 0 THEN
    IF PROTONOUT$ = "YES" THEN FIRE$(I) = "NO": GOTO SKIPFIRE
    Fy(I) = TIEy(I)
    Fx(I) = TIEx(I)
    IF TIEx(I) < 10 THEN FIRE$(I) = "NO"
    TFBACK(I) = 232
    TFBACKCOL(I) = 8
    GOTO NEWSHOT
  END IF
  TFBACK(I) = SCREEN(Fy(I), Fx(I), 0)
  IF TFBACK(I) = 205 OR TFBACK(I) = ASC("=") THEN TFBACK(I) = 32
  IF TFBACK(I) = 232 AND PROTONOUT$ = "NO" THEN TFBACK(I) = 32
  IF TFBACK(I) = ASC("X") THEN
    TFBACK(I) = 32
    FIRE$(I) = "NO"
    SHIELDS = SHIELDS - .5
    GOSUB RESCORE
    GOTO NEWSHOT
  END IF
  TFBACKCOL(I) = SCREEN(Fy(I), Fx(I), 1)
  LOCATE Fy(I), Fx(I)
  COLOR 10
  PRINT "Í";
  LOCATE Fy(I), Fx(I): COLOR TFBACKCOL(I): PRINT CHR$(TFBACK(I));
  Fx(I) = Fx(I) - 1
  IF Fx(I) = 0 THEN
    IF PROTONOUT$ = "YES" THEN FIRE$(I) = "NO": GOTO SKIPFIRE
    Fy(I) = TIEy(I)
    Fx(I) = TIEx(I)
    IF TIEx(I) < 10 THEN FIRE$(I) = "NO"
    TFBACK(I) = 232
    TFBACKCOL(I) = 8
    GOTO NEWSHOT
  END IF
  TFBACK(I) = SCREEN(Fy(I), Fx(I), 0)
  IF TFBACK(I) = 205 OR TFBACK(I) = ASC("=") THEN TFBACK(I) = 32
  IF TFBACK(I) = 232 AND PROTONOUT$ = "NO" THEN TFBACK(I) = 32
  IF TFBACK(I) = ASC("X") THEN
    TFBACK(I) = 32
    FIRE$(I) = "NO"
    SHIELDS = SHIELDS - .5
    GOSUB RESCORE
    GOTO NEWSHOT
  END IF
  TFBACKCOL(I) = SCREEN(Fy(I), Fx(I), 1)
  LOCATE Fy(I), Fx(I)
  COLOR 10
  PRINT "Í";
SKIPFIRE:
NEXT I
FOR G = 1 TO MAXFIR
  IF FIREY$(G) = "NO" THEN GOTO ONEPASSED
  LOCATE YFy(G), YFx(G): COLOR FBACKCOL(G): PRINT CHR$(FBACK(G))
  YFx(G) = YFx(G) + 1
  IF YFx(G) = 81 THEN FIREY$(G) = "NO": GOSUB ONEPAST
  FBACK(G) = SCREEN(YFy(G), YFx(G), 0)
  FBACKCOL(G) = SCREEN(YFy(G), YFx(G), 1)
  IF FBACK(G) = 205 OR FBACK(G) = ASC("X") OR FBACK(G) = ASC("=") THEN FBACK(G) = 32
  IF FBACK(G) = 232 THEN
    FOR U = 1 TO MAX
      IF TIEy(U) = YFy(G) AND TIEx(U) = YFx(G) THEN GOTO OUTTOF2
    NEXT U
OUTTOF2:
    IF U > MAX THEN
      LOCATE YFy(G), YFx(G)
      PRINT " ";
      GOTO SKIPTIE
    END IF
    LOCATE TIEy(U), TIEx(U)
    COLOR TBACKCOL(U)
    PRINT CHR$(TBACK(U));
    TIEy(U) = INT(RND * 22) + 1
    TIEx(U) = 80
    TBACK(U) = 32
    TBACKCOL(U) = 7
    IF FIRE$(U) = "YES" THEN
      LOCATE Fy(U), Fx(U)
      COLOR TFBACKCOL(U)
      PRINT CHR$(TFBACK(U));
    END IF
    YG = INT(RND * 2)
    FIRE$(U) = "NO"
    IF YG = 1 AND PROTONOUT$ = "NO" THEN FIRE$(U) = "YES"
    Fy(U) = TIEy(U)
    Fx(U) = TIEx(U)
SKIPTIE:
    YFy(G) = 0
    YFx(G) = 0
    FIREY$(G) = "NO"
    KILLS = KILLS + 1
    IF NOT SCORE + 10 > 9999999 THEN SCORE = SCORE + 10
    GOSUB RESCORE
    GOTO ONEPASSED
  END IF
  COLOR 4
  LOCATE YFy(G), YFx(G)
  PRINT "=";
ONEPASSED:
NEXT G
PLAY "MFP16"
COLOR 7
LOCATE Y, X: PRINT "X";
LOOP

RESCORE:
IF PROTONS > 3 THEN PROTONS = 3
IF SHIELDS < 0 THEN GOTO DEAD
SHIELD$ = "()()()()()()()()()()"
LASER$ = LTRIM$(RTRIM$(STR$(LASER)))
Proton$ = STRING$(PROTONS, "+") + STRING$(3 - PROTONS, " ")
SCORE$ = LTRIM$(RTRIM$(STR$(SCORE)))
KILLS$ = LTRIM$(RTRIM$(STR$(KILLS)))
LOCATE 23, 13
COLOR 11, 1
'PRINT SHIELD$
PRINT LEFT$(SHIELD$, 2 * SHIELDS); : COLOR 0: PRINT RIGHT$(SHIELD$, 2 * (10 - SHIELDS));
LOCATE 23, 49
COLOR 8: PRINT "["; : COLOR 11: PRINT LASER$; : COLOR 8: PRINT "] ";
LOCATE 23, 75
COLOR 11
PRINT Proton$;
LOCATE 25, 10
COLOR 8
PRINT "["; : COLOR 12: PRINT SCORE$; : COLOR 8: PRINT "]";
LOCATE 25, 28
PRINT "["; : COLOR 12: PRINT KILLS$; : COLOR 8: PRINT "]";
COLOR , 0
RETURN

ONEPAST:
FIREY$(G) = "NO"
LOCATE YFy(G), 80
PRINT " ";
YFx(G) = 0
YFy(G) = 0
FBACK(G) = 0
FBACKCOL(G) = 0
RETURN ONEPASSED:

DEAD:
GOSUB TOPTEN
CLS
COLOR 10
PRINT "             TOP TEN SCORES             "
COLOR 2
PRINT "             --- --- ------"
OPEN "ATTACK!.TTL" FOR INPUT AS #1
FOR I = 1 TO 10
INPUT #1, A$
INPUT #1, A
AA$ = LTRIM$(RTRIM$(STR$(A)))
COLOR 9
IF I = FACT - 1 THEN COLOR 11
PRINT A$; : COLOR 7: PRINT STRING$(40 - LEN(A$) - LEN(AA$), "."); : COLOR 12: PRINT AA$
NEXT I
CLOSE
PRINT
COLOR 8
PRINT "Press"; : COLOR (8 + 16): PRINT " ESC "; : COLOR 8: PRINT "to continue..."
DO: B$ = INKEY$: LOOP UNTIL B$ = CHR$(27)
CLS
COLOR 4
PRINT "You"; : COLOR 20: PRINT " DIED!"; : COLOR 4: PRINT "  How could you?!"; : COLOR 12: PRINT "  Better luck next time."
PRINT
COLOR 2
PRINT "Final Score :"; : COLOR 10: PRINT SCORE
COLOR 2
PRINT "Total Kills :"; : COLOR 10: PRINT KILLS
COLOR 5: PRINT STRING$(79, "Ä")
COLOR 14
PRINT "Thank you for playing"; : COLOR 2: PRINT " *"; : COLOR 10: PRINT "Fighter Attack!"; : COLOR 2: PRINT "*"; : COLOR 14: PRINT " by "; : COLOR 12: PRINT "Micro"; : COLOR 11: PRINT "Hof"; : COLOR 14: PRINT "!";
COLOR 5: PRINT STRING$(79, "Ä")
COLOR 12
PRINT "Micro"; : COLOR 11: PRINT "Hof"; : COLOR 14: PRINT " is                        "; : COLOR 4: PRINT " For more product info, write :"
PRINT "-----------"; : COLOR 12: PRINT "                           Brian Hof"
COLOR 11: PRINT "*"; : COLOR 9: PRINT " Brian Hof"; : COLOR 12: PRINT "                           212 S 11 St           "
COLOR 11: PRINT "*"; : COLOR 9: PRINT " Connor Reynolds"; : COLOR 12: PRINT "                     Marshalltown, IA  50158"
COLOR 5: PRINT STRING$(79, "Ä")
COLOR 15
PRINT "OR write to "; : COLOR 8: PRINT ":"; : COLOR 12: PRINT " dean"; : COLOR 4: PRINT "@"; : COLOR 12: PRINT "marshallnet.com"
COLOR 5: PRINT STRING$(79, "Ä")
COLOR 7
END


END

QUIT:
GOSUB TOPTEN
CLS
COLOR 10
PRINT "             TOP TEN SCORES             "
COLOR 2
PRINT "             --- --- ------"
OPEN "ATTACK!.TTL" FOR INPUT AS #1
FOR I = 1 TO 10
INPUT #1, A$
INPUT #1, A
AA$ = LTRIM$(RTRIM$(STR$(A)))
COLOR 9
IF I = FACT - 1 THEN COLOR 11
PRINT A$; : COLOR 7: PRINT STRING$(40 - LEN(A$) - LEN(AA$), "."); : COLOR 12: PRINT AA$
NEXT I
CLOSE
PRINT
COLOR 8
PRINT "Press"; : COLOR (8 + 16): PRINT " ESC "; : COLOR 8: PRINT "to continue..."
DO: B$ = INKEY$: LOOP UNTIL B$ = CHR$(27)
CLS
COLOR 5: PRINT STRING$(79, "Ä")
COLOR 14
PRINT "Thank you for playing"; : COLOR 2: PRINT " *"; : COLOR 10: PRINT "Fighter Attack!"; : COLOR 2: PRINT "*"; : COLOR 14: PRINT " by "; : COLOR 12: PRINT "Micro"; : COLOR 11: PRINT "Hof"; : COLOR 14: PRINT "!";
COLOR 5: PRINT STRING$(79, "Ä")
COLOR 2
PRINT "Final Score :"; : COLOR 10: PRINT SCORE; : COLOR 14: PRINT "    Nice Aim!"
COLOR 2
PRINT "Total Kills :"; : COLOR 10: PRINT KILLS
COLOR 5: PRINT STRING$(79, "Ä")
COLOR 12
PRINT "Micro"; : COLOR 11: PRINT "Hof"; : COLOR 14: PRINT " is                        "; : COLOR 4: PRINT " For more product info, write :"
PRINT "-----------"; : COLOR 12: PRINT "                           Brian Hof"
COLOR 11: PRINT "*"; : COLOR 9: PRINT " Brian Hof"; : COLOR 12: PRINT "                           212 S 11 St           "
COLOR 11: PRINT "*"; : COLOR 9: PRINT " Connor Reynolds"; : COLOR 12: PRINT "                     Marshalltown, IA  50158"
COLOR 5: PRINT STRING$(79, "Ä")
COLOR 12
COLOR 15
PRINT "OR write to "; : COLOR 8: PRINT ":"; : COLOR 12: PRINT " dean"; : COLOR 4: PRINT "@"; : COLOR 12: PRINT "marshallnet.com"
COLOR 5: PRINT STRING$(79, "Ä")
COLOR 7
END

TOPTEN:
REDIM TSCORE(11)
REDIM TSCORE$(11)
REDIM TEMPSC(10)
REDIM TEMPSC$(10)
OPEN "ATTACK!.TTL" FOR RANDOM AS #1
CLOSE
PEWP:
OPEN "ATTACK!.TTL" FOR INPUT AS #1
  FOR I = 1 TO 10
  IF EOF(1) THEN
   CLOSE
   OPEN "ATTACK!.TTL" FOR OUTPUT AS #1
   FOR Z = 1 TO 10
   PRINT #1, "Empty"
   PRINT #1, "0"
   NEXT Z
   CLOSE
   GOTO PEWP
  END IF
  INPUT #1, TSCORE$(I)
  INPUT #1, TSCORE(I)
  NEXT I
CLOSE #1
IF SCORE = 0 THEN GOTO SKIPTHIS
FOR I = 1 TO 10
  IF SCORE >= TSCORE(I) THEN TEMPSC(I) = SCORE: FACT = I: GOTO DONEHERE
  TEMPSC(I) = TSCORE(I)
  TEMPSC$(I) = TSCORE$(I)
NEXT I
IF I = 10 THEN RETURN
DONEHERE:
CLS
COLOR 13
PRINT "You made a high score!"
RETRY:
COLOR 4
PRINT "Enter your name"; : COLOR 12: PRINT " (20 characters)"; : COLOR 8: PRINT " : ";
COLOR 15
INPUT "", TEMPSC$(FACT)
IF LEN(TEMPSC$(FACT)) > 20 THEN GOTO RETRY
FACT = FACT + 1
FOR I = FACT TO 10
  TEMPSC(I) = TSCORE(I - 1)
  TEMPSC$(I) = TSCORE$(I - 1)
NEXT I
HEH:
KILL "ATTACK!.TTL"
OPEN "ATTACK!.TTL" FOR OUTPUT AS #1
  FOR I = 1 TO 10
  PRINT #1, TEMPSC$(I)
  PRINT #1, TEMPSC(I)
  NEXT I
CLOSE
SKIPTHIS:
RETURN
