10 DIM G[8,8],M[8,8],Q[8,8],K[9,3] 20 DIM A$[50],C$[72],D$[10],L$[4],I$[15] 30 READ D$,L$,A$,O2,O3,O4,O5,O8,E1,K1 40 REM Written by Joe Altmaier sometime in the late 70s 55 DATA ".123456789",".BE"," + 'O'/^\>!<***",2,3,4,5,8,10,12 60 DEF FNO(Q)=QO8 65 DEF FNR(X)=INT(RND(O1)*X)+O1 70 F1=F2=F3=O1=1 80 I1=I2=A1=O0=0 110 REM GALAXY STARTUP 120 FOR I=O1 TO O8 130 FOR J=O1 TO O8 140 G[I,J]=RND(O1)^O2 150 IF I>O2 OR J>O2 THEN 180 160 G[I,J]=G[I,J]+O3 170 GOTO 200 180 IF RND(O1)>.125 THEN 200 190 G[I,J]=G[I,J]+10 200 NEXT J 210 NEXT I 220 G[O1,O1]=G[O1,O1]+20 230 MAT M=G 240 REM SHIP STARTUP 250 READ X,Y,X1,Y1,E,P,S,H 260 DATA 5,5,3,3,1000,10,0,55 265 PRINT "DIFFICULTY FACTOR(1-10)"; 270 INPUT M 275 M=M/10 280 GOTO 1660 290 REM PRINT NEW SCREEN 300 IF F1=O0 THEN 700 310 FOR I=O1 TO O8 320 FOR J=O1 TO O8 330 PRINT A$[(Q[J,I]+O1)*O3-O2,(Q[J,I]+O1)*O3]; 480 NEXT J 490 REM PRINT VITAL INFO 500 IF I100 THEN 620 545 PRINT "ENERGY "E 550 GOTO 630 560 IF P>O2 THEN 620 570 PRINT "PHOTONS "P 575 GOTO 630 580 IF S>500 THEN 620 585 PRINT "SHIELDS "S 590 GOTO 630 600 PRINT "QUADRANT "X;Y 610 GOTO 630 620 PRINT 630 NEXT I 640 F1=O0 690 REM VICTORY/DEATH 700 IF E1=O0 AND K1=O0 THEN 9800 710 IF S400 THEN 9900 730 H=H-H/(LOG(10)/LOG(H))/10 990 REM COMMAND INPUT 1000 INPUT C$ 1005 C$=UPS$(C$) 1010 I=POS("MPTELSGAR",C$[O1,O1]) 1030 GOTO I OF 1100,2100,2500,3000,3500,4000,4500,5000,5500 1050 PRINT "MOVE PHASER TORPEDO" 1060 PRINT "ENERGY AL. LONG SCAN SHORT SCAN" 1070 PRINT "REPORT AUTO SCAN GALACTIC RECORD" 1080 GOTO 6000 1090 REM MOVING 1100 PRINT "COURSE(1-9),WARP(1-3)"; 1110 INPUT C,W 1115 IF W>O3 OR WE OR UK2 THEN 2260 2180 H1=U/SQR((X1-K[I,O1])^O2+(Y1-K[I,O2])^O2) 2190 K[I,O3]=K[I,O3]-H1 2200 IF K[I,O3]>O0 THEN 2250 2210 Q[K[I,O1],K[I,O2]]=O0 2220 GOSUB 9200 2230 PRINT "KILLED"Q-K2"KLINGONS!"; 2240 GOTO 2170 2250 NEXT I 2260 IF Q=K2 THEN 2290 2270 PRINT 2280 GOTO 6000 2290 PRINT "NONE KILLED" 2300 GOTO 6000 2490 REM TORPEDOING 2500 IF P#O0 THEN 2530 2510 PRINT "OUT OF TORPEDOES." 2520 GOTO 6000 2530 P=P-O1 2540 PRINT "DIRECTION(1-9)"; 2550 INPUT C 2560 GOSUB 9000 2570 IF S1=O0 THEN 2950 2580 F1=A1 2590 C1=Q[S1,S2] 2610 PRINT "HIT A"; 2620 GOTO C1 OF 2630,2630,2650,2810,2850 2630 PRINT " STAR." 2640 F1=O0 2645 GOTO 6000 2650 PRINT " KLINGON!" 2653 Q[S1,S2]=O0 2655 S1=INT(S1+.5) 2657 S2=INT(S2+.5) 2660 FOR I=O1 TO K2 2670 IF K[I,01]#S1 OR K[I,O2]#S2 THEN 2780 2680 GOSUB 9200 2760 GOTO 6000 2780 NEXT I 2790 PRINT "PROGRAM CONFUSED. GAME UNRELIABLE." 2800 GOTO 6000 2810 PRINT " STARBASE! YOU FOOL!" 2815 Q[S1,S2]=O0 2820 G[X,Y]=G[X,Y]-10 2830 M[X,Y]=G[X,Y] 2840 GOTO 6000 2850 PRINT " AN ENEMY BASE!" 2860 E1=E1-O1 2870 IF E1= 20 OR C1<10 THEN 6220 6140 FOR J2=I-O1 TO I+O1 6150 IF FNO(J2) THEN 6200 6160 FOR J3=J-O1 TO J+O1 6170 IF FNO(J3) THEN 6190 6180 M[J2,J3]=G[J2,J3] 6190 NEXT J3 6200 NEXT J2 6210 GOTO 6520 6220 IF I=X AND J=Y THEN 6520 6225 C2=C1-INT(C1/10)*10 6230 S1=S2=O0 6240 IF C2= 20 THEN 6430 6310 G[I,J]=C1-O1 6320 M[I,J]=G[I,J] 6330 C3=C3+O1 6340 G[J2,J3]=C3 6350 PRINT "KLINGON ATTACKING"J2;J3; 6360 IF C3-INT(C3/10)*10 >= O3 THEN 6390 6365 PRINT 6370 M[J2,J3]=G[J2,J3] 6380 GOTO 6520 6390 PRINT "AHRGH!" 6400 G[J2,J3]=C3-10 6410 M[J2,J3]=G[J2,J3] 6420 GOTO 6520 6430 IF C3-INT(C3/10)*10 >= O3 THEN 6460 6440 S1=J2 6450 S2=J3 6460 NEXT J3 6470 NEXT J2 6480 IF S1=O0 THEN 6520 6484 IF I#O1 OR J#O1 THEN 6490 6486 IF C2>6 THEN 6500 6488 GOTO 6520 6490 IF RND(O1)>M/O3 THEN 6520 6500 G[I,J]=C1-O1 6510 G[S1,S2]=G[S1,S2]+O1 6520 NEXT J 6530 NEXT I 6540 REM KLINGON GENERATION 6550 IF E1=O0 THEN 300 6560 IF X=O1 AND Y=O1 THEN 300 6570 IF INT(G[O1,O1]-20)=9 THEN 300 6580 IF RND(O1)>M THEN 300 6590 G[O1,O1]=G[O1,O1]+O1 6600 K1=K1+O1 6610 GOTO 300 8990 REM COLLISION SUBROUTINE 9000 I1=COS((C-O1)*.785398) 9010 I2=-SIN((C-O1)*.785398) 9020 S1=X1 9030 S2=Y1 9040 S1=S1+I1 9050 S2=S2+I2 9060 IF FNO(INT(S1+.5))=O1 OR FNO(INT(S2+.5))=O1 THEN 9100 9070 IF Q[S1,S2]=O0 THEN 9040 9080 IF Q[S1,S2]=O2 THEN 9040 9090 RETURN 9100 S1=O0 9110 RETURN 9190 REM DELETE KLINGON 9200 FOR J2=I TO K2-O1 9210 FOR J3=O1 TO O3 9220 K[J2,J3]=K[J2+O1,J3] 9230 NEXT J3 9240 NEXT J2 9250 G[X,Y]=G[X,Y]-O1 9260 M[X,Y]=G[X,Y] 9270 K2=K2-O1 9280 K1=K1-O1 9290 F1=A1 9300 RETURN 9790 REM VICTORY 9800 PRINT 9810 PRINT "YOU HAVE PURGED THE GALAXY OF KLINGONS!" 9820 PRINT "YOU WILL BE AWARDED THE MEDAL OF VALOR"; 9830 IF H <= 500 AND S>=O0 THEN 9999 9840 PRINT ", POSTHUMOUSELY." 9850 STOP 9890 REM DEATH 9900 PRINT '10"YOU MELTED! WHAT A HORRIBLE END!" 9920 STOP 9950 PRINT '10"SHIELDS HAVE BUCKLED! YOUR SHIP IS GONE!" 9999 END