100CLEAR :RANDOMIZE 110NU=4:DIM UX(NU),UD(NU),UT(NU) 120NT=14:DIM TX(NT),TY(NT) 130NF=3:DIM FX(NF),FY(NF) 140CV$="00" 142CA$="0000000000000000" 145SP$=" " 150SC$="40C0C0E0E0C0C040" 160DIM UC$(1) 170UC$(0)="40E0E0E0F0F0E060" 180UC$(1)="60E0F0F0E0E0E040" 190BO$="2040A0C0C0A04020" 200DW=56:DH=48:DL=1:DR=DL+DW:CW=8:CE=CW-1:CH=8:IX=12:UY=15 300NS=2:SC=0:GOSUB 3200 310GOSUB *I 400SX=DL+DW/2:SY=7:TU=-1:SB=0 410FOR I=0 TO NU:UX(I)=0:UT(I)=0:NEXT 412FOR I=0 TO NT:TY(I)=0:NEXT 414FOR I=0 TO NF:FX(I)=0:NEXT 420FR=NF+1 450GOSUB *R 480UI=0:TI=0:FI=0:FD=0 490CL=0:KP$="" 500*M 510GOSUB 800 515GOSUB 1700 520GOSUB 900 530GOSUB 1300 540GOSUB 1500 550GOSUB 1700 560IF SB=0 GOTO 690 570GCURSOR (SX,SY):GPRINT BO$:FOR I=0 TO 2000:NEXT 580NS=NS-1:IF NS>0 GOTO 400 590LOCATE IX,4:PRINT "GAME OVER"; 600LOCATE IX,5:PRINT "PUSH ENTER"; 610K$= INKEY$ :IF K$<>"" GOTO 610 615K$= INKEY$ :IF K$<> CHR$ (13) GOTO 615 620KP$=K$:GOTO 300 690CL=CL+1:GOTO *M 700GCURSOR (SX,SY):GPRINT SC$:RETURN 750GCURSOR (V,SY):GPRINT CV$:SX=X:GOSUB 700:RETURN 800K$= INKEY$ 810IF K$="0" AND SX>DL+2 THEN X=SX-1:V=SX+CE:GOSUB 750:RETURN 820IF K$="." AND SX+CW<=DR-2 THEN X=SX+1:V=SX:GOSUB 750:RETURN 825IF K$=KP$ THEN RETURN ELSE KP$=K$ 830IF K$="Z" THEN FD=1:GOTO 1300 840IF K$="X" THEN FD=2:GOTO 1300 890RETURN 900I=UI 910X=UX(I):IF X>0 GOTO 1000 920IF RND (1)>=UL GOTO 1080 930UD(I)= FIX ( RND (1)*2):IF UD(I)=0 THEN X=DL ELSE X=DR-CW 940GOTO 1070 1000IF UD(I)<0 GOTO 1100 1005IF UD(I) GOTO 1030 1010IF X=DR-CW GOSUB 1200:GOTO 1080 1020GCURSOR (X,I*8+UY):GPRINT CV$:X=X+1:GOTO 1070 1030IF X=DL GOSUB 1200:GOTO 1080 1040GCURSOR (X+CE,I*8+UY):GPRINT CV$:X=X-1:GOTO 1070 1070GCURSOR (X,I*8+UY):GPRINT UC$(UD(I)):UX(I)=X 1072IF X>=SX-CW AND XNU GOTO 1550 1530W=X-UX(I) 1540IF W>=0 AND W=4 THEN GOSUB 1600:GOTO 1590 1550' 1560GOSUB 1440 1570Y=Y+2:IF Y>=DH THEN GOSUB 1450:GOTO 1590 1580I=FI:GOSUB 1400 1590FI=(FI+1) MOD (NF+1):RETURN 1600GCURSOR (UX(I),I*8+UY):GPRINT BO$ 1610GOSUB 1440 1620UD(I)=-1:GOSUB 1450 1630SC=SC+(I+1):GOSUB 3200:GOSUB 3150:GOSUB 3180 1690RETURN 1700IF TU<0 GOTO 1800 1710FOR I=0 TO NT 1720IF TY(I) GOTO 1780 1730X=UX(TU)+3:Y=TU*8+UY-4:UT(TU)=RA 1740GOSUB 1900:TU=-1:I=NT+1 1780NEXT 1800I=TI 1810Y=TY(I):IF Y=0 GOTO 1880 1820X=TX(I):GOSUB 1950 1830Y=Y-2:GOSUB 1900 1840IF Y>8 GOTO 1880 1850IF X>=SX AND X"" GOTO 3070 3075K$= INKEY$ :IF K$<> CHR$ (13) GOTO 3075 3080KP$=K$:RETURN 3090*R 3100CLS 3110GOSUB 700 3120GOSUB 3150 3125GOSUB 3160 3130GOSUB 3170 3131GOSUB 3180 3132LINE (DL-1,0)-(DL-1,47) 3134LINE (DR+1,0)-(DR+1,47) 3140RETURN 3150LOCATE IX,0:PRINT "SC"; RIGHT$ (SP$+ STR$ (SC),6);:RETURN 3160LOCATE IX,1:PRINT "SHIP"; RIGHT$ (SP$+ STR$ (NS),4);:RETURN 3170LOCATE IX,3:PRINT "FIRE"; RIGHT$ (SP$+ STR$ (FR),4);:RETURN 3180LOCATE IX,2:PRINT "RANK"; RIGHT$ (SP$+ STR$ (RA-1),4);:RETURN 3200RA=10-(SC\10):IF RA<1 THEN RA=1 3210UL=.1*(SC\10)+.1:IF UL>.9 THEN UL=.9 3220RETURN