10  REM  WRITTEN BY RICHARD MOREFIELD - ARAGON -  1974  (ITF)
20  REM  MODIFIED BY JEFF BROWN - ARAGON - 04/04/75 ( BOCES BASIC )
30  REM MODIFIED TO HP 2000 ACCESS BASIC   12/08/75  BY JEFF BROWN
40  REM 'TREK2' PITS YOU AGAINST 1-15 KLINGONS * 3660 WORDS = 15 REC'D
50  REM DIM F$[11],A$[1]
60  REM FILES * FILE/STRING STUFF REMOVED FOR HP BASIC 6/6/10 WTN
70  DIM R[2],S[2],H[2],G[2],A[15,6],V[15]
80  LET F8=3.95
90  PRINT "+++ STAR TREK +++"
100  PRINT "DO YOU WANT INSTRUCTIONS (1=YES OR 0=NO) ";
110  INPUT A
120  IF A#1 THEN 140
130  GOSUB 2130
140  REM
320  PRINT "INPUT # OF SHIPS"
330  INPUT S5
340  IF S5>0 AND S5<16 AND S5=INT(S5) THEN 370
350  PRINT "THIS GAME ALLOWS FOR 1-15 KLINGON OPPONENTS."
360  GOTO 320
370  LET T5=0
380  LET S0=S5
390  LET H[1]=H[2]=R[1]=R[2]=S[1]=S[2]=0
400  MAT A=ZER
410  MAT V=ZER
420  LET P=2000
430  LET S3=1000+((S0>8)+(S0>10))*250
440  FOR X=1 TO S5
450  LET A[X,1]=INT(RND(0)*20+10)
460  IF INT(RND(0)*2)+1=2 THEN 480
470  LET A[X,1]=-A[X,1]
480  LET A[X,2]=INT(RND(0)*20)+10
490  IF INT(RND(0)*2)+1=2 THEN 510
500  LET A[X,2]=-A[X,2]
510  LET A[X,5]=100
520  LET A[X,6]=1000
530  LET V[X]=1
540  NEXT X
550  GOSUB 552
551  GOTO 560
552  PRINT "PHASERS AT "INT(P/20)"%"
553  PRINT "SHIELDS AT "INT(S3/15)"%"
554  PRINT "TEMP OVERLOAD AT "INT(T5/10)"%"
555  RETURN 
560  PRINT "SENSOR SWEEP"
570  LET X1=0
580  FOR X=1 TO S5
590  IF V[X]=0 THEN 730
600  REM X2=INT(SQR((A[X,1]^2)+(A[X,2]^2))+.99) MAX 1
601  LET X2=INT(SQR((A[X,1]^2)+(A[X,2]^2))+.99)
602  IF X2>1 THEN 610
603  LET X2=1
610  IF X2<100 THEN 640
620  LET X1=X1+1
630  GOTO 730
640  IF A[X,6]/X2<62+RND(0)*20 THEN 710
650  LET S3=S3-(INT(A[X,6]/X2)*F8)
660  PRINT "KLINGON FIRING  SHIELDS HOLDING AT ";
670  IF S3<0 THEN 1200
680  PRINT INT(S3/15)"%"
700  LET A[X,6]=0
710  PRINT A[X,1]"/"A[X,2]" KLINGON"X"AT"X2;A[X,6]/100;A[X,5]/10
730  NEXT X
740  IF X1=0 THEN 1080
750  PRINT X1;" SHIPS OUT OF SENSOR RANGE"
760  GOTO 1080
770  FOR X=1 TO S5
780  IF A[X,5]<100 THEN 810
790  REM A[X,6]=(A[X,6]+100) MIN 1000
791  LET A[X,6]=(A[X,6]+100)
792  IF A[X,6]<1000 THEN 800
793  LET A[X,6]=1000
800  GOTO 820
810  REM A[X,5]=(A[X,5]+10) MIN 100
811  LET A[X,5]=(A[X,5]+10)
812  IF A[X,5]<100 THEN 820
813  LET A[X,5]=100
820  NEXT X
830  FOR T=1 TO 2
840  LET H[T]=H[T]-SGN(H[T])
850  NEXT T
860  FOR X=1 TO S5
870  LET R[1]=A[X,1]-H[1]
880  LET R[2]=A[X,2]-H[2]
890  LET S[1]=A[X,3]
900  LET S[2]=A[X,4]
910  FOR T=1 TO 2
920  IF R[T]<0 THEN 970
930  IF R[T]=0 THEN 990
940  LET S[T]=S[T]-1
950  LET R[T]=R[T]+S[T]
960  GOTO 1010
970  LET S[T]=S[T]+1
980  GOTO 950
990  IF S[T]<0 THEN 970
1000  GOTO 940
1010  NEXT T
1020  LET A[X,1]=R[1]
1030  LET A[X,2]=R[2]
1040  LET A[X,3]=S[1]
1050  LET A[X,4]=S[2]
1060  NEXT X
1070  GOTO 560
1080  PRINT "COMMAND ";
1090  INPUT R
1100  REM GOTO R+1 OF 2480,1170,1380,1400,1880,2110
1101  IF R=0 THEN 2480
1102  IF R=1 THEN 1170
1103  IF R=2 THEN 1380
1104  IF R=3 THEN 1400
1105  IF R=4 THEN 1880
1106  IF R=5 THEN 2110
1110  IF R >= -15 AND R <= -1 AND R=INT(R) THEN 1510
1120  PRINT "ILLEGAL COMMAND.  ENTER 1 FOR INSTRUCTIONS  ? ";
1130  INPUT A
1140  IF A#1 THEN 1080
1150  GOSUB 2130
1160  GOTO 1080
1170  REM P=(P+500) MIN 2000
1171  LET P=(P+500)
1172  IF P<2000 THEN 1180
1173  LET P=2000
1180  LET T5=T5+99
1190  IF T5<1000 THEN 1310
1200  PRINT "*** BOOM ***"
1210  REM GOTO (S0>3)+(S0>6)+(S0>8) OF 1240,1260,1280
1211  IF (S0>3)+(S0>6)+(S0>8)=1 THEN 1240
1212  IF (S0>3)+(S0>6)+(S0>8)=2 THEN 1260
1213  IF (S0>3)+(S0>6)+(S0>8)=3 THEN 1280
1220  PRINT "   WELL, CAPTAIN DUNSEL!  ARE YOU PROUD OF YOURSELF?"
1230  GOTO 1290
1240  PRINT "   YOU SURE BLEW YOUR TRAINING LESSON!  ";
1241  PRINT "THE ENTERPRISE AND"
1250  GOTO 1290
1260  PRINT "   YOU FAILED AT THE TEST, WE SUGGEST THAT YOU BLEW IT!"
1270  GOTO 1290
1280  PRINT "   YOU TRIED AGAINST INCREDIBLE ODDS (AND LOST), ";
1281  PRINT "YOUR SHIP AND"
1290  PRINT "   YOU HAVE BEEN DESTROYED.  THE FEDERATION IS DOOMED !"
1300  STOP 
1310  GOSUB 552
1330  IF H[1] THEN 1350
1340  IF H[2]=0 THEN 1370
1350  PRINT "YOU ARE GOING "H[1]","H[2]
1370  GOTO 770
1380  REM S3=(S3+300) MIN 1500
1381  LET S3=(S3+300)
1382  IF S3<1500 THEN 1390
1383  LET S3=1500
1390  GOTO 1180
1400  PRINT "NEW SPEED: H,I"
1410  INPUT G[1],G[2]
1420  FOR T=1 TO 2
1430  IF ABS(G[T]-H[T]) <= 6 THEN 1470
1440  PRINT "*** TOO HIGH ***"
1450  PRINT "YOU ARE GOING "H[1]","H[2]
1460  GOTO 1400
1470  NEXT T
1480  LET H[1]=INT(G[1])
1490  LET H[2]=INT(G[2])
1500  GOTO 1180
1510  LET Y1=ABS(R)
1520  IF V[Y1]=1 THEN 1550
1530  PRINT "THERE IS NO SUCH SHIP-CHECK AGAIN"
1540  GOTO 1080
1550  LET Y2=A[Y1,1]
1560  LET Y3=A[Y1,2]
1570  LET Y4=A[Y1,5]
1580  REM Y2=SQR((Y2*Y2)+(Y3*Y3)) MAX 1
1581  LET Y2=SQR((Y2*Y2)+(Y3*Y3))
1582  IF Y2>1 THEN 1590
1583  LET Y2=1
1590  IF Y4>(P/Y2) THEN 2080
1600  LET P=P-(Y4*Y2)
1610  PRINT "*** BOOM *** KLINGON DESTROYED"
1620  LET V[Y1]=0
1630  FOR X2=1 TO S5
1640  IF V[X2]=1 THEN 1670
1650  LET X1=X2
1660  GOTO 1680
1670  NEXT X2
1680  FOR X2=X1 TO S5
1690  IF V[X2]=1 THEN 1720
1700  NEXT X2
1710  GOTO 1790
1720  FOR X3=1 TO 6
1730  LET A[X1,X3]=A[X2,X3]
1740  LET A[X2,X3]=0
1750  NEXT X3
1760  LET V[X1]=1
1770  LET V[X2]=0
1780  GOTO 1630
1790  PRINT "PHASER POWER =";
1800  PRINT INT(P/20);"%"
1810  FOR X=1 TO S5
1820  IF V[X] THEN 1080
1830  NEXT X
1840  PRINT TAB(18)"*** HOORAY FOR THE FEDERATION ***"
1850  PRINT "     YOU HAVE DESTROYED THE LAST KLINGON IN THE GALAXY"
1860  STOP 
1870  GOTO 1080
1880  PRINT "NO SAVE"
2070  GOTO 1080
2080  LET A[Y1,5]=INT(Y4-(P/Y2))
2090  LET P=0
2100  GOTO 1790
2110  REM T5=(T5-200) MAX 0
2111  LET T5=(T5-200)
2112  IF T5>0 THEN 2120
2113  LET T5=0
2120  GOTO 1310
2130  PRINT "STAR TREK #2 INSTRUCTIONS:"
2140  PRINT "YOU CAN DETERMINE THE DIFFICULTY OF THE GAME BY ";
2141  PRINT "THE NUMBER OF"
2150  PRINT "KLINGONS AGAINST YOU."
2152  PRINT "   1-3  MIDSHIPMAN (PLEBE 1ST CLASS)"
2160  PRINT "   4-5  IN TRAINING"
2162  PRINT "   6-8  COMMANDER"
2170  PRINT "   9-10 CAPTAIN"
2172  PRINT "  11-15  YOU'RE BUCKING FOR ADMIRAL"
2180  PRINT "THE COMMANDS ARE:"
2190  PRINT "-1 TO -15 TO FIRE PHASERS AT SHIPS 1-15"
2200  PRINT " 0  END THE GAME"
2210  PRINT " 1  POWER TO PHASERS"
2220  PRINT " 2  POWER TO SHIELDS"
2230  PRINT " 3  MOVE"
2240  REM PRINT " 4  SAVE THE GAME IN A FILE OF YOUR CHOICE"
2250  PRINT " 5  COOL POWER REACTORS"
2260  PRINT "WARNING> DO NOT LET TEMP GO ABOVE 99% ";
2261  PRINT "(OR ELSE ***BOOM***)"
2270  PRINT " THE KLINGONS START OUT HEADING TOWARD YOU AT ";
2271  PRINT "VARYING DISTANCES"
2280  PRINT " FROM YOU.  THE SENSOR SCAN WILL SHOW THERE X,Y ";
2281  PRINT "COORDINATES RE-"
2290  PRINT " LATIVE TO YOU (YOU ARE ALWAYS CONSIDERED TO BE AT ";
2291  PRINT "0,0), THEIR"
2300  PRINT " ASSIGNED NUMBER, THEIR DISTANCE FROM YOU AND ";
2301  PRINT "THEIR SHIELD"
2310  PRINT " AND PHASER POWER.  THE FORM IS:"
2320  PRINT "    11 /  11  KLINGON  1 AT 17    9 1"
2330  PRINT "    IF YOU WISH TO MOVE (TO OVERTAKE OR ESCAPE FROM ";
2331  PRINT "THE KLINGONS)"
2340  PRINT " YOU CAN DO SO BY USING COMMAND 3.  THIS WILL ALLOW ";
2341  PRINT "YOU TO SPEED"
2350  PRINT " UP OR SLOW DOWN BY SIX UNITS PER POSITION (X AND Y) ";
2351  PRINT "EACH TURN."
2360  PRINT " YOUR DEGREE OF MOVEMENT IS SUBTRACTED FROM THE ";
2361  PRINT "KLINGONS X,Y"
2370  PRINT " COORDINATES TO GIVE YOU THEIR RELATIVE POSITIONS."
2380  PRINT "    WHEN YOU FIRE AT A KLINGON YOUR PHASERS CONTINUE ";
2381  PRINT "FIRING UNTIL"
2390  PRINT " THE KLINGON IS DESTROYED OR YOUR PHASERS ARE ";
2391  PRINT "EXHAUSTED.  AFTER"
2400  PRINT " THEY HAVE FIRED YOU WILL BE TOLD YOUR REMAINING ";
2401  PRINT "PHASER POWER AND"
2410  PRINT " YOU CAN THEN INPUT ANOTHER COMMAND."
2420  PRINT "   THE KLINGONS WILL FIRE AT YOU WHEN THEY ARE ";
2421  PRINT "TWELVE TO SIX-"
2430  PRINT " TEEN UNITS AWAY FROM YOU.  THE KLINGONS CANNOT SLOW DOWN"
2440  PRINT " IMMEDIATELY SO THEY WILL PROBABLY GET AS CLOSE AS FIVE ";
2441  PRINT "UNITS FROM"
2450  PRINT " YOU.  YOU SHOULD WAIT UNTIL THEY ARE CLOSER (INSTEAD ";
2451  PRINT "OF FIRING"
2460  PRINT " AT LONG RANGE) TO CONSERVE PHASER POWER."
2470  RETURN 
2480  END 

