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 42 REM TSB E VERSION 8/06 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=O0=0 90 A1=1 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 485 PRINT " "; 490 REM PRINT VITAL INFO 500 IF I400 THEN 9900 730 H=H-H/(LOG(10)/LOG(H))/10 990 REM COMMAND INPUT 1000 INPUT C$ 1005 REM C$=UPS$(C$) 1010 REM I=POS("MPTELSGAR",C$[O1,O1]) 1030 REM GOTO I OF 1100,2100,2500,3000,3500,4000,4500,5000,5500 1032 C$=C$[O1,O1] 1033 IF C$="M" THEN 1100 1034 IF C$="P" THEN 2100 1035 IF C$="T" THEN 2500 1036 IF C$="E" THEN 3000 1037 IF C$="L" THEN 3500 1038 IF C$="S" THEN 4000 1039 IF C$="G" THEN 4500 1040 IF C$="A" THEN 5000 1041 IF C$="R" THEN 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(0-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,1]#S1 OR K[I,O2]#S2 THEN 2780 2680 GOSUB 9200 2760 GOTO 6000 2780 NEXT I 2790 PRINT "PROGRAM CONFUSED." 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 "YOU MELTED! WHAT A HORRIBLE END!" 9920 STOP 9950 PRINT "SHIELDS HAVE BUCKLED! YOUR SHIP IS GONE!" 9999 END