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 DIM F$[11],A$[1] 60 FILES * 70 DIM R[2],S[2],H[2],G[2],A[15,6],V[15] 80 F8=3.95 90 PRINT LIN(2);TAB(27)"+++ STAR TREK +++"LIN(1) 100 PRINT "DO YOU WANT INSTRUCTIONS (YES OR NO) ? "; 110 LINPUT A$[1,1] 120 IF A$#"Y" THEN 140 130 GOSUB 2130 140 PRINT "DO YOU WISH TO RETRIEVE A FILE (YES OR NO) ? "; 150 LINPUT A$[1,1] 160 IF A$#"Y" THEN 320 170 PRINT "WHAT IS THE NAME OF YOUR FILE "; 180 INPUT F$[1,11] 190 ASSIGN F$,1,K 200 IF K=0 THEN 250 210 IF K <= 2 THEN 240 220 PRINT "THE FILE DOESN'T EXIST OR IT CANNOT BE ACCESSED." 230 STOP 240 PRINT "THE FILE CAN BE READ ONLY." 250 IF END #1 THEN 310 260 READ #1,1 270 MAT READ #1;A,V,R,S,H 280 READ #1;S5,S0,P,S3,T5 290 PRINT USING 1320;P/20,S3/15,T5/10 300 GOTO 1080 310 PRINT "NO GAME IN FILE" 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."LIN(1) 360 GOTO 320 370 T5=0 380 S0=S5 390 H[1]=H[2]=R[1]=R[2]=S[1]=S[2]=0 400 MAT A=ZER 410 MAT V=ZER 420 P=2000 430 S3=1000+((S0>8)+(S0>10))*250 440 FOR X=1 TO S5 450 A[X,1]=INT(RND(0)*20+10) 460 IF INT(RND(0)*2)+1=2 THEN 480 470 A[X,1]=-A[X,1] 480 A[X,2]=INT(RND(0)*20)+10 490 IF INT(RND(0)*2)+1=2 THEN 510 500 A[X,2]=-A[X,2] 510 A[X,5]=100 520 A[X,6]=1000 530 V[X]=1 540 NEXT X 550 PRINT USING 1320;P/20,S3/15,T5/10 560 PRINT "SENSOR SWEEP" 570 X1=0 580 FOR X=1 TO S5 590 IF V[X]=0 THEN 730 600 X2=INT(SQR((A[X,1]^2)+(A[X,2]^2))+.99) MAX 1 610 IF X2<100 THEN 640 620 X1=X1+1 630 GOTO 730 640 IF A[X,6]/X2<62+RND(0)*20 THEN 710 650 S3=S3-(INT(A[X,6]/X2)*F8) 660 PRINT "KLINGON FIRING SHIELDS HOLDING AT "; 670 IF S3<0 THEN 1200 680 PRINT USING 690;S3/15 690 IMAGE 3D.D,"%" 700 A[X,6]=0 710 PRINT USING 720;A[X,1],A[X,2],X,X2,(A[X,6]/100),(A[X,5]/10) 720 IMAGE 6DX,"/",4D2X,"KLINGON",X2DX,"AT",X2D3X,2(X2D) 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 A[X,6]=(A[X,6]+100) MIN 1000 800 GOTO 820 810 A[X,5]=(A[X,5]+10) MIN 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 R[1]=A[X,1]-H[1] 880 R[2]=A[X,2]-H[2] 890 S[1]=A[X,3] 900 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 S[T]=S[T]-1 950 R[T]=R[T]+S[T] 960 GOTO 1010 970 S[T]=S[T]+1 980 GOTO 950 990 IF S[T]<0 THEN 970 1000 GOTO 940 1010 NEXT T 1020 A[X,1]=R[1] 1030 A[X,2]=R[2] 1040 A[X,3]=S[1] 1050 A[X,4]=S[2] 1060 NEXT X 1070 GOTO 560 1080 PRINT "COMMAND "; 1090 INPUT R 1100 GOTO R+1 OF 2480,1170,1380,1400,1880,2110 1110 IF R >= -15 AND R <= -1 AND R=INT(R) THEN 1510 1120 PRINT "ILLEGAL COMMAND. DO YOU WANT INSTRUCTIONS ? "; 1130 LINPUT A$[1,1] 1140 IF A$#"Y" THEN 1080 1150 GOSUB 2130 1160 GOTO 1080 1170 P=(P+500) MIN 2000 1180 T5=T5+99 1190 IF T5<1000 THEN 1310 1200 PRINT "*** BOOM ***"LIN(1) 1210 GOTO (S0>3)+(S0>6)+(S0>8) OF 1240,1260,1280 1220 PRINT " WELL, CAPTAIN DUNSEL! ARE YOU PROUD OF YOURSELF?" 1230 GOTO 1290 1240 PRINT " YOU SURE BLEW YOUR TRAINING LESSON! 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), YOU SHIP AND" 1290 PRINT '7'7'7'7"YOU HAVE BEEN DESTROYED. THE FEDERATION IS DOOMED !"'7'7LIN(1) 1300 STOP 1310 PRINT USING 1320;P/20,S3/15,T5/10 1320 IMAGE "PHASERS AT ",3D,"%, SHIELDS AT ",3D,"%, TEMP OVERLOAD AT ",3D,"%" 1330 IF H[1] THEN 1350 1340 IF H[2]=0 THEN 1370 1350 PRINT USING 1360;H[1],H[2] 1360 IMAGE "YOU ARE GOING ",3D," ,",3D 1370 GOTO 770 1380 S3=(S3+300) MIN 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 USING 1360;H[1],H[2] 1460 GOTO 1400 1470 NEXT T 1480 H[1]=INT(G[1]) 1490 H[2]=INT(G[2]) 1500 GOTO 1180 1510 Y1=ABS(R) 1520 IF V[Y1]=1 THEN 1550 1530 PRINT "THERE IS NO SUCH SHIP-CHECK AGAIN" 1540 GOTO 1080 1550 Y2=A[Y1,1] 1560 Y3=A[Y1,2] 1570 Y4=A[Y1,5] 1580 Y2=SQR((Y2*Y2)+(Y3*Y3)) MAX 1 1590 IF Y4>(P/Y2) THEN 2080 1600 P=P-(Y4*Y2) 1610 PRINT "*** BOOM *** KLINGON DESTROYED" 1620 V[Y1]=0 1630 FOR X2=1 TO S5 1640 IF V[X2]=1 THEN 1670 1650 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 A[X1,X3]=A[X2,X3] 1740 A[X2,X3]=0 1750 NEXT X3 1760 V[X1]=1 1770 V[X2]=0 1780 GOTO 1630 1790 PRINT "PHASER POWER ="; 1800 PRINT USING 690;INT(P/20) 1810 FOR X=1 TO S5 1820 IF V[X] THEN 1080 1830 NEXT X 1840 PRINT LIN(2);TAB(18)"*** HOORAY FOR THE FEDERATION ***"'7 1850 PRINT " YOU HAVE DESTROYED THE LAST KLINGON IN THE GALAXY" 1860 STOP 1870 GOTO 1080 1880 PRINT "WHAT FILE DO YOU WISH TO USE "; 1890 INPUT F$[1,11] 1900 ASSIGN F$,1,K 1910 IF K=0 THEN 2040 1920 IF K>2 THEN 1950 1930 PRINT "THE FILE IS UNDER RESTRICTED ACCESS." 1940 GOTO 1080 1950 PRINT "DO YOU WISH TO HAVE IT CREATED (YES OR NO) ? "; 1960 LINPUT A$[1,1] 1970 IF A$#"Y" THEN 1080 1980 CREATE X,F$,1 1990 GOTO X+1 OF 1900,1900,2000,2020 2000 PRINT "ATTEMPT TO CREATE THE FILE UNSUCESSFUL." 2010 GOTO 1080 2020 PRINT "THERE IS NO ROOM ON THE ACCOUNT OR ELSE THE SYSTEM IS FULL." 2030 GOTO 1080 2040 READ #1,1 2050 MAT PRINT #1;A,V,R,S,H 2060 PRINT #1;S5,S0,P,S3,T5 2070 GOTO 1080 2080 A[Y1,5]=INT(Y4-(P/Y2)) 2090 P=0 2100 GOTO 1790 2110 T5=(T5-200) MAX 0 2120 GOTO 1310 2130 PRINT LIN(3)"STAR TREK #2 INSTRUCTIONS:"LIN(1) 2140 PRINT "YOU CAN DETERMINE THE DIFFICULTY OF THE GAME BY THE NUMBER OF" 2150 PRINT "KLINGONS AGAINST YOU."LIN(1)" 1-3 MIDSHIPMAN (PLEBE 1ST CLASS)" 2160 PRINT " 4-5 IN TRAINING"LIN(1)" 6-8 COMMANDER" 2170 PRINT " 9-10 CAPTAIN"LIN(1)" 11-15 YOU'RE BUCKING FOR ADMIRAL" 2180 PRINT LIN(2);TAB(7)"THE COMMANDS ARE:"LIN(1) 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 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% (OR ELSE ***BOOM***)" 2270 PRINT " THE KLINGONS START OUT HEADING TOWARD YOU AT VARYING DISTANCES" 2280 PRINT " FROM YOU. THE SENSOR SCAN WILL SHOW THERE X,Y COORDINATES RE-" 2290 PRINT " LATIVE TO YOU (YOU ARE ALWAYS CONSIDERED TO BE AT 0,0), THEIR" 2300 PRINT " ASSIGNED NUMBER, THEIR DISTANCE FROM YOU AND THEIR SHIELD" 2310 PRINT " AND PHASER POWER. THE FORM IS:" 2320 PRINT " 11 / 11 KLINGON 1 AT 17 9 1"LIN(3) 2330 PRINT " IF YOU WISH TO MOVE (TO OVERTAKE OR ESCAPE FROM THE KLINGONS)" 2340 PRINT " YOU CAN DO SO BY USING COMMAND 3. THIS WILL ALLOW YOU TO SPEED" 2350 PRINT " UP OR SLOW DOWN BY SIX UNITS PER POSITION (X AND Y) EACH TURN." 2360 PRINT " YOUR DEGREE OF MOVEMENT IS SUBTRACTED FROM THE KLINGONS X,Y" 2370 PRINT " COORDINATES TO GIVE YOU THEIR RELATIVE POSITIONS."LIN(1) 2380 PRINT " WHEN YOU FIRE AT A KLINGON YOUR PHASERS CONTINUE FIRING UNTIL" 2390 PRINT " THE KLINGON IS DESTROYED OR YOUR PHASERS ARE EXHAUSTED. AFTER" 2400 PRINT " THEY HAVE FIRED YOU WILL BE TOLD YOUR REMAINING PHASER POWER AND" 2410 PRINT " YOU CAN THEN INPUT ANOTHER COMMAND."LIN(1) 2420 PRINT " THE KLINGONS WILL FIRE AT YOU WHEN THEY ARE 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 UNITS FROM" 2450 PRINT " YOU. YOU SHOULD WAIT UNTIL THEY ARE CLOSER (INSTEAD OF FIRING" 2460 PRINT " AT LONG RANGE) TO CONSERVE PHASER POWER."LIN(3) 2470 RETURN 2480 END