Compucolor.org – Virtual Media

Listing of file='TREK.BAS;01' on disk='vmedia/epps_trek-sector.ccvf'

10 REM 	STAR TREK.	V 30.8.80
BY G.EPPS

20 N= 8:PLOT 12,15
30 A= 49151- 128* N:B= INT (A/ 256):C= A- 256* B
40 POKE 33284,B:POKE 33283,C
50 A= 49150- 128* N:B= INT (A/ 256):C= A- 256* B
60 POKE 32941,B:POKE 32940,C:CLEAR 50
90 DIM I(3),A$(8),KC(2),CC(3),D(15),Q(11,11),G(11,11),K(10,3)
100 DIM GE(7),S(9,1),CL$(3,1)
110 DATA 21,21,17,19,18,20,20,20,20
120 FOR Q= 0TO 8:READ A(Q):NEXT Q
130 KC(0)= 100:KC(1)= 250:KC(2)= 500:K(0,3)= 1500
140 B$= "GALDEFTORLODPHAKLNWRPIMPLRS":Q= RND (- PEEK (33209)- PEEK (33208))
150 EN$= "cxe":SP$= " . ":BA$= "cjd":BH$= "cjd":FS$= "wxv"
160 DEF FN D(X)= SQR ((QX- K(Q,1))* (QX- K(Q,1))+ (QY- K(Q,2))* (QY- K(Q,2)))
170 DEF FN Q(X)= INT (RND (1)* X)+ 1:K1= 57.3
180 DEF FN X(X)= INT (SIN (X/ K1)* W* (1+ .414* ABS (SIN (2* X/ K1)))+ .5)
190 DEF FN Y(X)= INT (COS (X/ K1)* W* (1+ .414* ABS (SIN (2* X/ K1)))+ .5)
200 DEF FN IN(X)= AA> 0AND AA< 11AND BB> 0AND BB< 11
210 CL$(0,0)= "qjp":CL$(0,1)= "SCOUT":CC(0)= 6
220 CL$(1,0)= "cxd":CL$(1,1)= "CRUISER":CC(1)= 3
230 CL$(2,0)= "xxx":CL$(2,1)= "BTL SHP":CC(2)= 1
240 CL$(3,0)= FS$:CC(3)= 4
250 I(1)= 0:I(2)= 400:I(3)= 0:K= 0:B= 0:N= 10
260 FOR I= 1TO 10:FOR J= 1TO 10:Z= 0
270 IF RND (1)< .02THEN G(I,J)= 0:GOTO 310
280 IF RND (1)< 0.1THEN X= FN Q(9):K= K+ X:Z= Z+ 100* X
290 IF RND (1)< .09THEN B= B+ 1:Z= Z+ 10
300 G(I,J)= - FN Q(9)- Z
310 NEXT J,I
320 K0= K:TS= INT (K0* (25+ RND (1)* 15)):FX= FN Q(N):FY= FN Q(N):GOSUB 2060
330 GX= FN Q(N):GY= FN Q(N):QX= FN Q(N):QY= FN Q(N):IF G(GX,GY)< - 120GOTO 330
340 POKE 33209,0:POKE 33210,0:PLOT 12,3,64,0
350 FOR Q7= 1TO 10:K(Q7,3)= 0:FOR W9= 1TO 10:Q(Q7,W9)= 5:NEXT W9:NEXT Q7
360 Q(QX,QY)= 4:S= 0:BA= 0:Q= 0:NK= 0:X= 1E3:P= ABS (G(GX,GY))
370 G(GX,GY)= ABS (G(GX,GY)):FS= 0
380 IF G(GX,GY)> 0GOTO 410
390 NO= 2:BH= - 1:PLOT 3,20,6
400 PRINT ""BH$"DESTRUCTION EMMINENT !"BH$"":GOSUB 3610:GOSUB 3610:GOTO 500
410 FOR I= 1TO 3:X= X/ 10:Z= INT (P/ X):IF Z= 0GOTO 490
420 FOR L= 1TO Z
430 S1= FN Q(N):S2= FN Q(N):IF Q(S1,S2)< > 5GOTO 430
440 Q(S1,S2)= I:ON IGOTO 450,460,470
450 K(L,0)= INT (RND (1)* 3):K(L,1)= S1:K(L,2)= S2:K(L,3)= KC(K(L,0)):NK= NK+ 1:GOTO 480
460 BA= - 1:B1= S1:B2= S2:GOTO 480
470 S= S+ 1:S(S,0)= S1:S(S,1)= S2
480 NEXT L:P= P- X* Z
490 NEXT I:H= - 1
500 IF ESTHEN ES= 0:PLOT 6,7,12
510 IF NK> 0THEN NO= 8:GOSUB 3610
520 LA= 0:IF NK= KTHEN LA= - 1
530 IF GALTHEN GAL= 0:PLOT 12
540 C= CALL (1)
550 FOR A= 1+ FSTO NK:IF K(A,3)= 0GOTO 570
560 PLOT 3,127,K(A,2)* 3- 1,K(A,1)* 2+ 10,CC(K(A,0)):PRINT CL$(K(A,0),0);
570 NEXT A
580 PLOT 3,127,QY* 3- 1,QX* 2+ 10,2:PRINT EN$;
590 IF BATHEN PLOT 3,B2* 3- 1,B1* 2+ 10:PRINT BA$
600 IF S= 0GOTO 640
610 FOR Q= 1TO S:IF S(Q,1)= 0GOTO 630
620 PLOT 3,127,S(Q,1)* 3,S(Q,0)* 2+ 10,7,42
630 NEXT Q
640 PLOT 27,27:IF NOT FSTHEN GOSUB 3220
650 SRS= - 1:GOTO 2330
660 IF FSTHEN GOSUB 3580:GOTO 690
670 IF G(GX,GY)< 100GOTO 860
680 GOSUB 3220
690 HIT= - 1:ZZ= 0
700 FOR Q= 1+ FSTO NK
710 IF K(Q,3)= 0GOTO 840
720 RA= FN D(Q)
730 IF RA> 5THEN GOSUB 2980:IF Q> 0GOTO 840
740 ZZ= ZZ+ 1
750 U= INT (K(Q,3)/ RA/ 2)
760 PLOT 3,0,ZZ,6,2:PRINT ZZ,CL$(K(Q,0),0),U" UNIT HIT",
770 I(2)= I(2)- U:IF I(2)< 0GOTO 2240
780 G= FN Q(9):D(G)= D(G)- RND (1)* U/ 100
790 IF D(G)> 0THEN PRINT :NO= 10:GOSUB 3610:GOTO 820
800 PRINT MID$ (B$,(G- 1)* 3+ 1,3)" DAMAGED !"
810 NO= 2:GOSUB 3610
820 DA= - 1:GOSUB 1940:PLOT 6,7,3,44,16:PRINT I(2)" ":DA= 0
830 IF FTTHEN FT= 0:RETURN
840 NEXT Q:GOTO 2330
850 C= CALL (3):RETURN
860 C= CALL (3)
870 IF HTHEN H= 0:GOTO 660
880 IF ETHEN E= 0:ON E1GOTO 1790,2250,2280
890 I= CALL (6)
900 IF BHAND I< > 7AND I< 12GOTO 2240
910 IF CHTHEN CH= 0:GOTO 2030
920 IF I> 8GOTO 950
930 IF D(I)> = 0GOTO 950
940 PRINT ,,"DEVICE STILL DAMAGED":NO= 2:GOSUB 3610:GOTO 860
950 ON I+ 1GOTO 660,980,1530,1560,1860,2640,3100,1190,1190
960 ON I- 8GOTO 2020,530,3200,2240,3670,3670,3670,3670,3640
970 PRINT ,,"COMMAND NOT RECOGNISED !":NO= 2:GOSUB 3610:GOTO 860
980 C= CALL (5)
990 FOR I= 1TO N:FOR J= 1TO N
1000 A= G(I,J)
1010 IF A< 0GOTO 1060
1020 PLOT 3,J* 6- 3,9+ I* 2
1030 IF A< 1THEN PRINT " "BH$:GOTO 1060
1040 IF A< 10THEN PRINT " ";
1050 PRINT A
1060 NEXT J,I
1070 PLOT 3,GY* 6- 3,GX* 2+ 9,6,1
1080 IF G(GX,GY)< 10THEN PRINT " ";
1090 PRINT G(GX,GY)" "
1100 IF K(0,3)< 1OR G(FX,FY)< 0GOTO 1170
1110 PLOT 3,FY* 6- 3,FX* 2+ 9,31
1120 IF G(FX,FY)< 10THEN PRINT " ";
1130 IF FX= GXAND FY= GYTHEN PLOT 6,65
1140 IF G(FX,FY)= 0THEN PRINT BH$:GOTO 1160
1150 PRINT G(FX,FY)" "
1160 PLOT 15
1170 PLOT 3,16,31:PRINT "KLINGONS"K"  BASES"B"  TIME"TS- ST"";:PLOT 8:PRINT
1180 GAL= - 1:GOTO 3210
1190 PLOT 8:INPUT "COMPASS HEADING ? ";T:T= T- 90:PLOT 8,11
1200 PLOT 8:PRINT "PROPULSION ENERGY (0-9) ?":BH= 0:W1= CALL (2)- 48
1210 IF W1< 1OR W1> NGOTO 860
1220 ZZ= 0:H= - 1:DA= - 1
1230 FOR G= 1TO 9:IF D(G)> = 0GOTO 1270
1240 D(G)= D(G)+ RND (1):GOSUB 1940
1250 IF D(G)< 0GOTO 1270
1260 ZZ= ZZ+ 1:PLOT 3,30,ZZ,6,7:PRINT MID$ (B$,G* 3- 2,3)" NOW WORKING"
1270 NEXT G:W2= 2:DA= 0:IF I= 7THEN W2= 20
1280 IF I(1)+ I(2)< W1* W2THEN PRINT "NO ENERGY TO DO IT WITH!":GOSUB 2320:GOTO 860
1290 IF W1* W2> I(1)THEN I(1)= I(1)+ I(2)- W1* W2:I(2)= 0:GOTO 1310
1300 I(1)= I(1)- W1* W2
1310 PLOT 6,7,3,44,14:PRINT I(1)" ":IF I= 7GOTO 1500
1320 SX= QX:SY= QY
1330 FOR W= 1TO W1
1340 AA= SX+ FN X(T):BB= SY+ FN Y(T):IF FN IN(0)GOTO 1360
1350 NO= 2:PLOT 8,11:PRINT ,,"EXIT ONLY WITH WARP!":GOSUB 3610:GOTO 2330
1360 A= Q(AA,BB)
1370 ON AGOTO 1400,1400,1380,1400,1400,1380
1380 PLOT 8,11:PRINT ,,"BAD NAVIGATION":NO= 2:GOSUB 3610
1390 GOTO 2330
1400 F1= BB* 3- 1:F2= AA* 2+ 10
1410 PLOT 30,3,127,F1,F2,2,99,120,3,127,F1+ 2,F2,11,101,29
1420 PLOT 3,127,QY* 3- 1,QX* 2+ 10,6,32,46,32,3,64,0
1430 Q(QX,QY)= 5:QX= AA:QY= BB:Q(QX,QY)= 4
1440 ON AGOTO 1450,1450,0,1490,1490,0
1450 PLOT 3,127,QY* 3- 1,QX* 2+ 10,2:PRINT EN$:PLOT 3,64,0
1460 IF A= 2THEN GOSUB 2040:GOTO 2330
1470 IF A= 1GOTO 1710
1480 IF A= 0GOTO 2330
1490 NEXT W:A= 0:GOTO 1450
1500 W= W1:AA= GX+ FN X(T):BB= GY+ FN Y(T):IF FN IN(0)GOTO 1520
1510 PLOT 8:PRINT ,,"10 X 10 GAL!":NO= 2:GOSUB 3610:GOTO 2330
1520 PLOT 3,64,0:GX= AA:GY= BB:GOTO 350
1530 PRINT "YOU HAVE "I(1)+ I(2)" UNITS OF ENERGY"
1540 INPUT "LET SHIELDS = ";X:IF X> I(1)+ I(2)GOTO 1530
1550 I(1)= I(1)+ I(2)- X:I(2)= X:GOTO 2330
1560 IF I(3)< = 0THEN PRINT ,,"CAN'T FIRE ANYTHING !":NO= 2:GOSUB 3610:GOTO 860
1570 PLOT 8:INPUT "FIRING ANGLE ? ";T:S1= QX:S2= QY
1580 NO= 3:GOSUB 3610:H= - 1:T= T- 90:I(3)= I(3)- 1:PLOT 3,44,18:PRINT I(3)" "
1590 FOR W= 1TO 13
1600 AA= FN X(T)+ S1:BB= FN Y(T)+ S2
1610 IF NOT FN IN(0)GOTO 1690
1620 UU= Q(AA,BB)
1630 IF UU= 4GOTO 760
1640 Q(AA,BB)= 5
1650 PLOT 3,127,BB* 3,AA* 2+ 10,3,100
1660 PLOT 3,127,BB* 3- 1,AA* 2+ 10,6,32,46,32,3,64,0
1670 ON UUGOTO 1710,1700,2900,20,1680,3470
1680 NEXT W
1690 PLOT 14,6,1,3,26,9:PRINT "MISSED":GOTO 2330
1700 X= GX:Y= GY:BA= 0:ZZ= 0:GOSUB 3620:GOTO 2330
1710 FOR Q= 1TO NK:IF K(Q,1)= AAAND K(Q,2)= BBTHEN K(Q,3)= 0:EK= EK+ KC(K(Q,0))/ 10
1720 NEXT Q
1730 G(GX,GY)= G(GX,GY)- 100:K= K- 1
1740 PLOT 6,4,14,3,20,9:PRINT "KLINGON DESTROYED"
1750 PLOT 6,7,3,44,20:PRINT K" "
1760 NO= 6:GOSUB 3610
1770 IF K< = 0THEN E= - 1:E1= 1
1780 GOTO 2330
1790 PLOT 6,3:PRINT "CONGRATULATIONS!!!.THE LAST KLINGON"
1800 PRINT "  HAS BEEN DESTROYED!DO YOU WANT ANOTHER "
1810 PRINT "	MISSION IN THE ENTERPRISE ?":A= CALL (2)
1820 IF A= 89THEN RUN
1830 IF A= 99GOTO 650
1840 IF A= 67THEN CT= - 1:I(2)= I(2)+ 500:GOTO 530
1850 END
1860 PRINT "YOU HAVE "I(1)+ I(2)" UNITS OF ENERGY AND "I(3)" TORPEDOES"
1870 INPUT "HOW MANY TORPEDES TO LOAD AT 100 EACH ? ";X
1880 IF X* 100> I(1)+ I(2)GOTO 1860
1890 IF X+ I(3)< - 10THEN PRINT "LIMIT TO OFF-LOAD -10":GOSUB 2320:GOTO 860
1900 I(3)= I(3)+ X
1910 IF X* 100> I(1)THEN I(1)= I(1)+ I(2)- 100* X:I(2)= 0:GOTO 2330
1920 I(1)= I(1)- X* 100:GOTO 2330
1930 FOR G= 1TO 9
1940 IF D(G)< 0THEN PLOT 6,1:GOTO 1970
1950 IF D(G)< 2THEN PLOT 6,3:GOTO 1970
1960 D(G)= 2:PLOT 6,2
1970 PLOT 3,55,20+ G
1980 PRINT MID$ (B$,G* 3- 2,3)" "LEFT$ (STR$ (D(G))+ "  ",4);
1990 IF DATHEN RETURN
2000 IF G= 5THEN PRINT
2010 NEXT G:PLOT 8:PRINT :GOTO 2600
2020 CH= - 1:GOTO 860
2030 D(I)= 1:GOTO 1930
2040 FOR Q= 1TO 10:D(Q)= 2:NEXT Q
2050 DO= - 1:BA= 0:B= B- 1:G(GX,GY)= G(GX,GY)- 10
2060 I(1)= I(1)+ 1000:I(2)= I(2)+ 100:I(3)= I(3)+ 10
2070 RETURN
2080 FOR W= GX- 1TO GX+ 1
2090 IF D(9)< 0THEN PLOT 6,1,3,55,15:PRINT G(GX,GY):GOTO 2170
2100 FOR Q= GY- 1TO GY+ 1:G(W,Q)= ABS (G(W,Q))
2110 PLOT 6,7,3,(Q- GY)* 4+ 55,(W- GX)* 3+ 15
2120 IF Q= FYAND W= FXTHEN PLOT 31
2130 IF G(W,Q)< 1THEN PRINT "cjjd";:GOTO 2160
2140 IF W= GXAND Q= GYTHEN PLOT 29,17:PRINT G(W,Q);:GOTO 2160
2150 PRINT G(W,Q);
2160 NEXT Q
2170 PRINT :NEXT W
2180 IF SRSGOTO 2340
2190 GOTO 860
2200 IF QX= AATHEN ANGLE= 180+ 90* SGN (QY- BB):RETURN
2210 ANGLE= INT (572.96* ATN ((BB- QY)/ (AA- QX)))* - 0.1
2220 IF QX< AATHEN AN= AN+ 180
2230 RETURN
2240 E= - 1:E1= 2:NO= 4:GOSUB 3610:GOTO 2330
2250 PLOT 3,64,0:FOR Q= 1TO 64:PLOT 6,Q,27,25,96:NEXT Q:PLOT 3,0,9
2260 PRINT "YOU HAVE BEEN DESTROYED !!! DO YOU WANT ANOTHER "
2270 GOTO 1810
2280 PRINT "YOU HAVE RUN OUT OF STARDATES."
2290 INPUT "DO YOU WANT MORE TIME ? ";A$
2300 IF A$= "N"THEN END
2310 TS= TS+ 300:GOTO 2330
2320 PLOT 3,64,0:FOR Q= 1TO 1E3:NEXT Q:RETURN
2330 IF FTTHEN FT= 0:RETURN
2340 IF GALGOTO 860
2350 ST$= "GREEN ":F= 44
2360 IF I(1)< 250OR I(2)< 400THEN ST$= "YELLOW"
2370 IF I(1)< 100OR I(2)< 250OR FSOR G(GX,GY)> 100THEN ST$= " `RED`"
2380 IF DOTHEN ST$= "DOCKED"
2390 ST= INT (1.2* (PEEK (33210)* 60+ PEEK (33209)))
2400 IF K0= KTHEN EF$= " N/A":GOTO 2470
2410 W= INT (200* (EK/ ST)- 300)/ 10
2420 IF W< - 29THEN EF$= "HOPELESS!":GOTO 2460
2430 IF W> 79THEN W= 79
2440 EF$= CHR$ (A((W+ 30)/ 10))+ STR$ (W)+ ""
2450 IF W> 30THEN EF$= "*"+ EF$+ " *"
2460 IF CTTHEN EF$= " CHEAT!"
2470 PLOT 3,F,12:PRINT ST$
2480 FOR Q= 1TO 3:PLOT 3,F,12+ Q* 2:PRINT SPC( 6)
2490 PLOT 3,F,12+ Q* 2:PRINT I(Q):NEXT Q
2500 PLOT 3,F,20:IF LATHEN PRINT "*"K" *":GOTO 2520
2510 PRINT K" "
2520 PLOT 3,F,22:PRINT B" "
2530 PLOT 3,F,24:PRINT GY" ,"11- GX" "
2540 PLOT 3,F,26:PRINT QY" ,"11- QX" "
2550 PLOT 3,F,28:PRINT SPC( 10)
2560 PLOT 3,F,28:PRINT EF$
2570 PLOT 3,F,30:PRINT TS- ST"  "
2580 IF ST> TSTHEN E= - 1:E1= 3
2590 IF SRSOR DOTHEN DO= 0:GOTO 1930
2600 IF SRSTHEN SRS= 0:GOTO 2080
2610 PLOT 6,1,3,55,15:IF FSTHEN PLOT 31
2620 IF G(GX,GY)= 0THEN PRINT "cjjd":GOTO 860
2630 PRINT SPC( 4):PLOT 3,55,15:PRINT G(GX,GY)"":GOTO 860
2640 IF NK= 0THEN PLOT 8,11:PRINT "WHAT ARE YOU GOING TO HIT,DUMMY?":GOSUB 2320:GOTO 860
2650 L= 0:FOR Q= 1TO NK:IF K(Q,3)> 0THEN L= L+ 1
2660 NEXT Q:IF L= 0THEN NK= 0:GOTO 2640
2670 V= 8:IF L= 9THEN V= 7
2680 FOR W= 1TO 3:L= 0:FOR Q= 1TO NK:IF K(Q,3)= 0GOTO 2740
2690 L= L+ 1:PRINT TAB( (L- 1)* V)
2700 ON WGOTO 2710,2720,2730
2710 PRINT CL$(K(Q,0),1);:GOTO 2740
2720 PRINT K(Q,3);:GOTO 2740
2730 PRINT INT (1+ K(Q,3)* FN D(0)/ 2);
2740 NEXT Q:PRINT :PRINT :NEXT W:PRINT
2750 PRINT "YOU HAVE"I(1)" UNITS OF ENERGY"
2760 INPUT "HOW MUCH TO EXPEND ?";PP
2770 IF PP> I(1)THEN PLOT 6,1,28,11:GOTO 2760
2780 IF PP< = 0GOTO 860
2790 NO= 5:GOSUB 3610:H= - 1:I(1)= I(1)- PP:PLOT 3,44,14:PRINT I(1)" "
2800 FOR Q= 1TO NK:IF K(Q,3)= 0GOTO 2880
2810 K(Q,3)= K(Q,3)- INT (PP* 2/ FN D(0))
2820 IF K(Q,3)> 0GOTO 2880
2830 NO= 6:GOSUB 3610
2840 K(Q,3)= 0:K= K- 1:G(GX,GY)= G(GX,GY)- 100:Q(K(Q,1),K(Q,2))= 5
2850 EK= EK+ KC(K(Q,0))/ 10
2860 PLOT 3,44,20:PRINT K"   "
2870 PLOT 3,127,(K(Q,2)- 1)* 3+ 2,K(Q,1)* 2+ 10,6:PRINT SP$
2880 NEXT Q:PLOT 27,27:IF K= 0GOTO 1770
2890 GOTO 2330
2900 G(GX,GY)= G(GX,GY)- 1:IF G(GX,GY)> 0GOTO 2940
2910 PLOT 3,20,5,14:PRINT "YOU HAVE CREATED A BLACK HOLE!!!"
2920 PLOT 3,20,8:PRINT "VACATE AREA IMMEDIATELY!!":GOSUB 23
2930 BH= - 1
2940 FOR Q= 1TO S:IF S(Q,0)= AAAND S(Q,1)= BBTHEN S(Q,0)= 0:S(Q,1)= 0:GOTO 2960
2950 NEXT Q
2960 IF BHGOTO 2330
2970 GOTO 1690
2980 WH= Q(K(Q,1)+ SGN (QX- K(Q,1)),K(Q,2)+ SGN (QY- K(Q,2)))
2990 ON WHGOTO 3000,3010,3000,3000,3020,3000
3000 RETURN
3010 ZZ= ZZ+ 1:BA= 0:X= GX:Y= GY:GOSUB 3620
3020 Q(K(Q,1),K(Q,2))= 5
3030 PLOT 3,127,K(Q,2)* 3- 1,K(Q,1)* 2+ 10,6:PRINT SP$
3040 K(Q,1)= K(Q,1)+ SGN (QX- K(Q,1))
3050 K(Q,2)= K(Q,2)+ SGN (QY- K(Q,2))
3060 F= 0:IF Q= 0THEN F= 5
3070 Q(K(Q,1),K(Q,2))= 1+ F
3080 PLOT 3,127,K(Q,2)* 3- 1,K(Q,1)* 2+ 10,CC(K(Q,0)):PRINT CL$(K(Q,0),0):PLOT 27,27,8
3090 RETURN
3100 C= CALL (3):FOR W= 1TO NK:IF K(W,3)> 0GOTO 3150
3110 NEXT W:IF NOT BAGOTO 3140
3120 AA= B1:BB= B2:GOSUB 2200
3130 PLOT 3,20,4:PRINT BA$" / "EN$" ANGLE ="AN:GOSUB 2320:GOTO 860
3140 PRINT "NO KLINGONS OR BASES IN THIS QUADRANT":GOTO 2330
3150 PRINT "NO.	CLASS	DIST.	ANGLE	ENERGY"
3160 FOR Q= WTO NK:IF K(Q,3)< = 0GOTO 3190
3170 AA= K(Q,1):BB= K(Q,2):GOSUB 2200
3180 PRINT ""Q," "CL$(K(Q,0),0),INT (FN D(X)* 100)/ 100,ANGLE,K(Q,3)
3190 NEXT Q:I= CALL (6):GOTO 950
3200 C= CALL (3)
3210 I= CALL (4):GOTO 950
3220 IF K(0,3)< = 0THEN RETURN
3230 AA= FX:BB= FY
3240 FX= FX+ SGN (GX- FX):FY= FY+ SGN (GY- FY)
3250 A= ABS (G(FX,FY))
3260 IF A> 0GOTO 3290
3270 PLOT 8,11:PRINT ,,FS$" STOPPED AT "BH$
3280 FX= AA:FY= BB:RETURN
3290 IF VAL (RIGHT$ (STR$ (A),2))< 10GOTO 3320
3300 X= FX:Y= FY:ZZ= 0:K(0,3)= K(0,3)+ 1E3:GOSUB 3620
3310 PLOT 3,25,2:PRINT "BY "FS$" AT"FY" ,"11- FX
3320 IF ABS (FX- GX)> 1OR ABS (FY- GY)> 1THEN RETURN
3330 IF FX< > GXOR FY< > GYGOTO 3410
3340 IF BATHEN BA= 0:S1= B1:S2= B2:GOTO 3360
3350 S1= FN Q(N):S2= FN Q(N):IF Q(S1,S2)< > 5GOTO 3350
3360 K(0,0)= 3:K(0,1)= S1:K(0,2)= S2:FS= - 1
3370 Q(S1,S2)= 6
3380 PLOT 3,127,S2* 3- 1,S1* 2+ 10,4:PRINT FS$;
3390 IF Z1> 0THEN PLOT 3,Z1,Z2:PRINT ""ABS (G(Z3,Z4))
3400 NO= 9:GOSUB 3610:RETURN
3410 PLOT 3,30,5:PRINT "WARNING!"
3420 Z1= (FY- GY)* 4+ 55:Z2= (FX- GX)* 3+ 15
3430 PLOT 6,7,3,Z1,Z2
3440 Z3= FX:Z4= FY:PLOT 31:PRINT ABS (G(FX,FY)):PLOT 15
3450 NO= 7:GOSUB 3610
3460 PLOT 3,30,5:PRINT ""SPC( 9)"":RETURN
3470 K(0,3)= K(0,3)- 500
3480 PLOT 14,3,28,7:PRINT FS$" HIT!"
3490 PLOT 3,26,9:PRINT "ENERGY AT"INT (K(0,3)/ 15)" %":NO= 1:GOSUB 3610
3500 IF K(0,3)< = 0GOTO 3560
3510 FX= FX+ 2* SGN (5.1- FX):FY= FY+ 2* SGN (5.1- FY)
3520 IF G(FX,FY)= 0GOTO 3510
3530 FS= 0:PLOT 3,127,K(0,2)* 3- 1,K(0,1)* 2+ 10,6:PRINT SP$
3540 Q(K(0,1),K(0,2))= 5:IF K(0,3)> 0THEN GOSUB 3250
3550 GOTO 2330
3560 PLOT 6,8,3,0,9,14,11,3,25,9,6,7:PRINT " "FS$" DESTROYED ! "
3570 K(0,3)= 0:EK= EK+ 500:FX= 0:FY= 0:GOTO 3530
3580 AA= K(0,1):BB= K(0,2):GOSUB 2200:NO= 3
3590 T= AN+ 80+ 20* RND (1):S1= AA:S2= BB:FT= - 1:GOSUB 3610
3600 U= 500:Q= 0:ZZ= 0:GOTO 1590
3610 C= CALL (256* NO):RETURN
3620 PLOT 3,0,ZZ,11,3,20,ZZ:PRINT "FEDERATION BASE DESTROYED!"
3630 NO= 2:G(X,Y)= ABS (G(X,Y))- 10:B= B- 1:GOSUB 3610:RETURN
3640 PLOT 6,75,27,25,96,3,30,15:PRINT EN$
3650 D(FN Q(9))= - 2:D(FN Q(9))= - 2:PLOT 3,64,0
3660 GX= FN Q(10):GY= FN Q(10):ES= - 1:BH= 0:GOTO 350
3670 IF D(7)< 0GOTO 940
3680 T= I* 90- 1170:I= 7:GOTO 1200