100 REM *** PROGRAM SIMULATES TV PROGRAM STARTREK 110 REM *** WRITTEN BY MIKE MAYFIELD, CENTERLINE ENGINEERING 170 RANDOMIZE 180 PRINT " * * * STAR TREK * * *" 181 PRINT 200 INPUT "DO YOU WANT INSTRUCTIONS (THEY'RE LONG!)";A$ 210 IF A$<>"YES" THEN 230 220 GOTO 5820 230 REM *** PROGRAM BEGINS HERE 240 Z$,R$,Q$=" " 260 DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8) 290 T0,T=INT(RND(1)*20+20)*100 300 T9=30 301 D0=0 302 E0,E=3000 303 P0,P=10 304 S9=200 305 S,H8=0 360 DEF FND(D)=SQR((K(I,1)-S1)**2+(K(I,2)-S2)**2) 370 Q1=INT(RND(1)*8+1) 380 Q2=INT(RND(1)*8+1) 390 S1=INT(RND(1)*8+1) 400 S2=INT(RND(1)*8+1) 410 T7=TIME(0) 420 C(2,1),C(3,1),C(4,1),C(4,2),C(5,2),C(6,2)=-1 430 C(1,1),C(3,2),C(5,1),C(7,2),C(9,1)=0 440 C(1,2),C(2,2),C(6,1),C(7,1),C(8,1),C(8,2),C(9,2)=1 450 MAT D=ZER 460 D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL" 470 D$=D$+"PHOTON TUBESDAMAGE CNTRL" 480 E$="SHIELD CNTRLCOMPUTER" 490 B9,K9=0 491 REM *** SETS UP WHAT EXISTS IN GALAXY 500 FOR I=1TO8 510 FOR J=1TO8 520 R1=RND(1) 530 IF R1>.98 THEN 580 540 IF R1>.95 THEN 610 550 IF R1>.8 THEN 640 560 K3=0 561 GOTO 660 580 K3=3 581 K9=K9+3 582 GOTO 660 610 K3=2 611 K9=K9+2 612 GOTO 660 640 K3=1 641 K9=K9+1 660 R1=RND(1) 670 IF R1>.96 THEN 700 680 B3=0 681 GOTO 720 700 B3=1 701 B9=B9+1 720 S3=INT(RND(1)*8+1) 730 G(I,J)=K3*100+B3*10+S3 740 Z(I,J)=0 750 NEXT J 760 NEXT I 770 K7=K9 775 PRINT 776 PRINT 780 PRINT"YOU MUST DESTROY"K9" KLINGONS IN"T9" STARDATES WITH "B9" STARBASES" 790 IF B9>0 THEN 810 800 G(6,3)=114 810 K3,B3,S3=0 820 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 920 830 X=G(Q1,Q2)*.01 840 K3=INT(X) 850 B3=INT((X-K3)*10) 860 S3=G(Q1,Q2)-INT(G(Q1,Q2)*.1)*10 870 IF K3=0 THEN 910 880 IF S>200 THEN 910 890 PRINT"COMBAT AREA CONDITION RED" 900 PRINT" SHIELDS DANGEROUSLY LOW" 910 MAT K=ZER 920 FOR I=1TO3 930 K(I,3)=0 940 NEXT I 950 Q$=Z$ 951 R$=Z$ 970 S$=MID(Z$,1,48) 971 REM *** PUT ENTERPRISE SOMEWHERE 980 A$="<*>" 990 Z1=S1 1000 Z2=S2 1010 GOSUB 5510 1020 FOR I=1TOK3 1030 GOSUB 5380 1031 REM *** PUT KLINGONS SOMEWHERE 1040 A$="+++" 1050 Z1=R1 1060 Z2=R2 1070 GOSUB 5510 1080 K(I,1)=R1 1081 K(I,2)=R2 1082 K(I,3)=S9 1110 NEXT I 1120 FOR I=1TOB3 1130 GOSUB 5380 1131 REM *** PUT STARBASE(S) SOMEWHERE 1140 A$=">!<" 1141 Z1=R1 1142 Z2=R2 1170 GOSUB 5510 1180 NEXT I 1190 FOR I=1TOS3 1200 GOSUB 5380 1201 REM *** PUT STARS SOMEWHERE 1210 A$=" * " 1211 Z1=R1 1212 Z2=R2 1240 GOSUB 5510 1250 NEXT I 1260 GOSUB 4120 1270 INPUT "COMMAND:";A 1290 IF A=0 GOTO 1410 1291 IF A=1 GOTO 1260 1292 IF A=2 GOTO 2330 1293 IF A=3 GOTO 2530 1294 IF A=4 GOTO 2800 1295 IF A=5 GOTO 3460 1296 IF A=6 GOTO 3560 1297 IF A=7 GOTO 4630 1298 IF A=8 GOTO 6510 1310 PRINT 1311 PRINT" 0 = SET COURSE" 1320 PRINT" 1 = SHORT RANGE SENSOR SCAN" 1330 PRINT" 2 = LONG RANGE SENSOR SCAN" 1340 PRINT" 3 = FIRE PHASERS" 1350 PRINT" 4 = FIRE PHOTON TORPEDOES" 1360 PRINT" 5 = SHIELD CONTROL" 1370 PRINT" 6 = DAMAGE CONTROL REPORT" 1380 PRINT" 7 = CALL ON LIBRARY COMPUTER" 1390 PRINT" 8 = END THE CONTEST" 1391 PRINT 1400 GOTO 1270 1401 REM *** COURSE CONTROL CODE BEGINS HERE 1410 INPUT "COURSE (1-9):";C1 1430 IF C1=0 THEN 1270 1440 IF C1<1 OR C1>9 THEN 1410 1450 INPUT "WARP FACTOR (0-8):";W1 1470 IF W1<0 OR W1>8 THEN 1410 1480 IF D(1)>=0 OR W1<=.2 THEN 1510 1490 PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2" 1500 GOTO 1410 1510 IF K3<=0 THEN 1560 1520 GOSUB 3790 1530 IF K3<=0 THEN 1560 1540 IF S<0 THEN 4000 1550 GOTO 1610 1560 IF E>0 THEN 1610 1570 IF S<1 THEN 3920 1580 PRINT "YOU HAVE"E" UNITS OF ENERGY" 1590 PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS WHICH HAVE"S" UNITS LEFT" 1600 GOTO 1270 1610 FOR I=1TO8 1611 IF D(I)>=0 THEN 1640 1612 REM *** FIX ANY DAMAGED DEVICE 1630 D(I)=D(I)+1 1640 NEXT I 1650 IF RND(1)>.2 THEN 1810 1660 R1=INT(RND(1)*8+1) 1670 IF RND(1)>= .5 THEN 1750 1680 D(R1)=D(R1)-(RND(1)*5+1) 1690 PRINT 1691 PRINT "DAMAGE CONTROL REPORT:"; 1710 GOSUB 5610 1720 PRINT" DAMAGED" 1721 PRINT 1722 GOTO 1810 1750 D(R1)=D(R1)+(RND(1)*5+1) 1760 PRINT 1761 PRINT "DAMAGE CONTROL REPORT:"; 1780 GOSUB 5610 1790 PRINT" STATE OF REPAIR IMPROVED" 1791 PRINT 1810 N=INT(W1*8) 1811 A$=" " 1812 Z1=S1 1813 Z2=S2 1850 GOSUB 5510 1860 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)) 1870 X=S1 1871 Y=S2 1890 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)) 1900 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)) 1910 FOR I=1TON 1911 S1=S1+X1 1912 S2=S2+X2 1940 IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 2170 1950 S8=S1*24+S2*3-26 1951 IF S8>72 THEN 1990 1970 IF MID(Q$,S8,3)=" " THEN 2070 1980 GOTO 2030 1990 IF S8>144 THEN 2020 2000 IF MID(R$,S8-72,3)=" " THEN 2070 2010 GOTO 2030 2020 IF MID(S$,S8-144,3)=" " THEN 2070 2030 PRINT"WARP ENGINES SHUTDOWN AT SECTOR "S1","S2" DUE TO BAD NAVAGATION" 2040 S1=S1-X1 2041 S2=S2-X2 2042 GOTO 2080 2070 NEXT I 2080 A$="<*>" 2081 Z1=S1 2082 Z2=S2 2110 GOSUB 5510 2120 E=E-N+5 2121 IF W1<1 THEN 2150 2140 T=T+1 2150 IF T>T0+T9 THEN 3970 2160 GOTO 1260 2170 X=Q1*8+X+X1*N 2171 Y=Q2*8+Y+X2*N 2190 Q1=INT(X/8) 2191 Q2=INT(Y/8) 2192 S1=INT(X-Q1*8) 2193 S2=INT(Y-Q2*8) 2230 IF S1<>0 THEN 2260 2240 Q1=Q1-1 2241 S1=8 2260 IF S2<>0 THEN 2290 2270 Q2=Q2-1 2271 S2=8 2290 T=T+1 2291 E=E-N+5 2310 IF T>T0 + T9 THEN 3970 2320 GOTO 810 2321 REM *** LONG RANGE SENSON SCAN CODE BEGINS HERE 2330 IF D(3)>=0 THEN 2370 2340 PRINT "LONG RANGE SENSORS ARE INOPERABLE" 2360 GOTO 1270 2370 PRINT"LONG RANGE SENSOR SCAN FOR QUADRANT "Q1","Q2 2380 PRINT"-------------------" 2390 FOR I=Q1-1 TO Q1+1 2400 MAT N=ZER 2410 FOR J=Q2-1 TO Q2+1 2420 IF I<1 OR I>8 OR J<1 OR J>8 THEN 2460 2430 N(J-Q2+2)=G(I,J) 2440 IF D(7)<0 THEN 2460 2450 Z(I,J)=G(I,J) 2460 NEXT J 2470 P1$=": ### : ### : ### :" 2471 PRINT USING P1$,N(1),N(2),N(3) 2480 PRINT"-------------------" 2490 NEXT I 2500 GOTO 1270 2501 REM *** PHASER CONTROL CODE BEGINS HERE 2530 IF K3<=0 THEN 3670 2540 IF D(4)>=0 THEN 2570 2560 GOTO 1270 2570 IF D(7)>=0 THEN 2590 2580 PRINT " COMPUTER FAILURE HAMPERS ACCURACY" 2590 PRINT"PHASERS LOCKED ON TARGET. ENERGY AVAILABLE="E 2600 INPUT "NUMBER OF UNITS TO FIRE:";X 2620 IF X<=0 THEN 1270 2630 IF E-X<0 THEN 2570 2640 E=E-X 2650 GOSUB 3790 2660 IF D(7)>=0 THEN 2680 2670 X=X*RND(1) 2680 FOR I=1TO3 2690 IF K(I,3)<=0 THEN 2770 2700 H=INT((X/K3/FND(0))*(2*RND(1))) 2710 K(I,3)=K(I,3)-H 2720 PRINTH" UNIT HIT ON KLINGON AT SECTOR "K(I,1)","K(I,2); 2721 PRINT" ("K(I,3)" LEFT)" 2740 IF K(I,3)>0 THEN 2770 2750 GOSUB 3690 2760 IF K9<=0 THEN 4040 2770 NEXT I 2780 IF E<0 THEN 4000 2790 GOTO 1270 2791 REM *** PHOTON TORPEDO CODE BEGINS HERE 2800 IF D(5)>=0 THEN 2830 2810 PRINT "PHOTON TUBES ARE NOT OPERATIONAL" 2820 GOTO 1270 2830 IF P>0 THEN 2860 2840 PRINT "ALL PHOTON TORPEDOES EXPENDED" 2850 GOTO 1270 2860 INPUT "TORPEDO COURSE (1-9):";C1 2880 IF C1=0 THEN 1270 2890 IF C1<1 OR C1>=9 THEN 2860 2900 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)) 2910 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)) 2920 X=S1 2921 Y=S2 2922 P=P-1 2950 PRINT "TORPEDO TRACK:" 2960 X=X+X1 2961 Y=Y+X2 2980 IF X<1 OR X>=9 OR Y<1 OR Y>=9 THEN 3420 2990 PRINT" "X","Y 3010 A$=" " 3011 Z1=X 3012 Z2=Y 3040 GOSUB 5680 3050 IF Z3=0 THEN 3070 3060 GOTO 2960 3070 A$="+++" 3071 Z1=X 3072 Z2=Y 3100 GOSUB 5680 3110 IF Z3=0 THEN 3220 3120 PRINT "*** KLINGON DESTROYED ***" 3130 K3=K3-1 3131 K9=K9-1 3150 IF K9<=0 THEN 4040 3160 FOR I=1TO3 3161 IF INT(X)<>K(I,1) THEN 3190 3180 IF INT(Y)=K(I,2) THEN 3200 3190 NEXT I 3200 K(I,3)=0 3201 GOTO 3360 3220 A$=" * " 3221 Z1=X 3222 Z2=Y 3250 GOSUB 5680 3260 IF Z3=0 THEN 3290 3270 PRINT "YOU CAN'T DESTROY STARS, SILLY" 3280 GOTO 3420 3290 A$=">!<" 3291 Z1=X 3292 Z2=Y 3320 GOSUB 5680 3330 IF Z3=0 THEN 2960 3340 PRINT "*** STAR BASE DESTROYED *** .......CONGRATULATIONS" 3350 B3=B3-1 3360 A$=" " 3361 Z1=X 3362 Z2=Y 3390 GOSUB 5510 3400 G(Q1,Q2)=K3*100+B3*10+S3 3410 GOTO 3430 3420 PRINT "TORPEDO MISSED" 3430 GOSUB 3790 3440 IF E<0 THEN 4000 3450 GOTO 1270 3451 REM *** SHIELD CONTROL CODE BEGINS HERE 3460 IF D(7)>=0 THEN 3490 3470 PRINT "SHIELD CONTROL IS NON-OPERATIONAL" 3480 GOTO 1270 3490 PRINT "ENERGY AVAILABLE ="E+S; 3500 INPUT " NUMBER OF UNITS TO SHIELDS:";X 3510 IF X<=0 THEN 1270 3520 IF E+S-X<0 THEN 3490 3530 E=E+S-X 3531 S=X 3550 GOTO 1270 3551 REM *** DAMAGE CONTROL REPORT CODE BEGINS HERE 3560 IF D(6)>=0 THEN 3590 3570 PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE" 3580 GOTO 1270 3590 PRINT 3591 PRINT "DEVICE STATE OF REPAIR" 3610 FOR R1=1TO8 3620 GOSUB 5610 3630 PRINTD(R1) 3640 NEXT R1 3641 PRINT 3660 GOTO 1270 3670 PRINT"SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT" 3680 GOTO 1270 3690 PRINT "KLINGON AT SECTOR "K(I,1)","K(I,2)"DESTROYED ***" 3710 K3=K3-1 3711 K9=K9-1 3712 A$=" " 3713 Z1=K(I,1) 3714 Z2=K(I,2) 3760 GOSUB 5510 3770 G(Q1,Q2)=K3*100+B3*10+S3 3780 RETURN 3790 IF C$<>"DOCKED" THEN 3820 3800 PRINT "STAR BASE SHIELDS PROTECT THE ENTERPRISE" 3810 RETURN 3820 IF K3<=0 THEN 3910 3830 FOR I=1TO3 3831 IF K(I,3)<=0 THEN 3900 3850 H=INT((K(I,3)/FND(0))*(2+RND(1))) 3851 S=S-H 3870 PRINTH;" UNIT HIT ON ENTERPRISE AT SECTOR ";K(I,1);",";K(I,2); 3871 PRINT" (";S;" LEFT)" 3890 IF S<0 THEN 4000 3900 NEXT I 3910 RETURN 3920 PRINT "THE ENTERPRISE IS DEAD IN SPACE. IF YOU SURVIVE ALL IMPENDING" 3930 PRINT "ATTACKS YOU WILL BE DEMOTED TO THE RANK OF PRIVATE" 3940 IF K3<=0 THEN 4020 3950 GOSUB 3790 3960 GOTO 3940 3970 PRINT 3971 PRINT "IT IS STARDATE";T 3990 GOTO 4020 3991 REM *** NO ENERGY LEFT 4000 PRINT 4001 PRINT"THE ENTERPRISE HAS BEEN DESTROYED. THE FEDERATION WILL BE CONQUERED" 4020 PRINT "THERE ARE STILL ";K9;" KLINGON BATTLE CRUISERS" 4030 PRINT 4031 PRINT 4032 PRINT 4033 PRINT "YOU GET ANOTHER CHANCE...." 4034 GOTO 230 4040 PRINT 4041 PRINT"THE LAST KLINGON BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED" 4050 PRINT"THE FEDERATION HAS BEEN SAVED!!!!!" 4051 PRINT 4075 E5=((K7/(T-T0))*1000) 4080 PRINT "YOUR EFFICIENCY RATING =";E5 4100 PRINT"YOUR ACTUAL TIME OF MISSION =";INT((TIME(0)-T7)/60);" MINUTES" 4105 PRINT 4106 PRINT 4107 PRINT 4108 INPUT"DO YOU WANT TO TRY AGAIN";R$ 4109 IF R$ = "YES" THEN 230 4110 GOTO 6510 4111 REM *** SHORT RANGE SENSOR SCAN AND STARTING POINT CODE 4120 FOR I=S1-1TO S1+1 4130 FOR J=S2-1TO S2+1 4140 IF I<1 OR I>8 OR J<1 OR J>8 THEN 4200 4150 A$=">!<" 4151 Z1=I 4152 Z2=J 4180 GOSUB 5680 4190 IF Z3=1 THEN 4240 4200 NEXT J 4210 NEXT I 4220 D0=0 4221 GOTO 4310 4240 D0=1 4241 C$="DOCKED" 4242 E=3000 4243 P=10 4280 PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES" 4290 S=0 4291 GOTO 4380 4310 IF K3>0 THEN 4350 4320 IF E<E0 *.1 THEN 4370 4330 C$="GREEN" 4340 GOTO 4380 4350 C$="RED" 4351 GOTO 4380 4370 C$="YELLOW" 4380 IF D(2)>=0 THEN 4430 4390 PRINT 4391 PRINT"*** SHORT RANGE SENSORS ARE OUT ***" 4392 PRINT 4420 GOTO 4530 4430 O1$="---------------------------------" 4435 PRINT USING O1$ 4440 O2$=" \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \" 4445 PRINT USING O2$,MID(Q$,1,3),MID(Q$,4,3),MID(Q$,7,3),MID(Q$,10,3),MID(Q$,13,3),MID(Q$,16,3),MID(Q$,19,3),MID(Q$,22,3) 4450 O3$=O2$+" STARDATE #####" 4455 PRINT USING O3$,MID(Q$,25,3),MID(Q$,28,3),MID(Q$,31,3),MID(Q$,34,3),MID(Q$,37,3),MID(Q$,40,3),MID(Q$,43,3),MID(Q$,46,3),T 4460 O4$=O2$+" CONDITION \ \" 4465 PRINT USING O4$,MID(Q$,49,3),MID(Q$,52,3),MID(Q$,55,3),MID(Q$,58,3),MID(Q$,61,3),MID(Q$,64,3),MID(Q$,67,3),MID(Q$,70,3),C$ 4470 O5$=O2$+" QUADRANT #" 4475 PRINT USING O5$,MID(R$,1,3),MID(R$,4,3),MID(R$,7,3),MID(R$,10,3),MID(R$,13,3),MID(R$,16,3),MID(R$,19,3),MID(R$,22,3),Q1; 4476 PRINT ",";Q2 4480 O6$=O2$+" SECTOR #" 4485 PRINT USING O6$,MID(R$,25,3),MID(R$,28,3),MID(R$,31,3),MID(R$,34,3),MID(R$,37,3),MID(R$,40,3),MID(R$,43,3),MID(R$,46,3),S1; 4486 PRINT ",";S2 4490 O7$=O2$+" TOTAL ENERGY ######" 4495 PRINT USING O7$,MID(R$,49,3),MID(R$,52,3),MID(R$,55,3),MID(R$,58,3),MID(R$,61,3),MID(R$,64,3),MID(R$,67,3),MID(R$,70,3),E 4500 O8$=O2$+" PHOTON TORPEDOES ###" 4505 PRINT USING O8$,MID(S$,1,3),MID(S$,4,3),MID(S$,7,3),MID(S$,10,3),MID(S$,13,3),MID(S$,16,3),MID(S$,19,3),MID(S$,22,3),P 4510 O9$=O2$+" SHIELDS ######" 4515 PRINT USING O9$,MID(S$,25,3),MID(S$,28,3),MID(S$,31,3),MID(S$,34,3),MID(S$,37,3),MID(S$,40,3),MID(S$,43,3),MID(S$,46,3),S 4520 PRINT USING O1$ 4530 RETURN 4620 REM *** LIBRARY COMPUTER CODE BEGINS HERE 4630 IF D(8)>=0 THEN 4660 4640 PRINT "COMPUTER DISABLED" 4641 GOTO 1270 4660 INPUT "COMPUTER ACTIVE AND AWAITING COMMAND:";A 4680 IF A=0 GOTO 4740 4681 IF A=1 GOTO 4830 4682 IF A=2 GOTO 4880 4690 PRINT "FUNCTIONS AVAILABLE FROM COMPUTER" 4700 PRINT " 0 = CUMULATIVE GALACTIC RECORD" 4710 PRINT " 1 = STATUS REPORT" 4720 PRINT " 2 = PHOTON TORPEDO DATA" 4730 GOTO 4660 4731 REM *** CUMULATIVE GALACTIC RECORD CODE BEGINS HERE 4740 PRINT"COMPUTER RECORD OF GALAXY FOR QUADRANT "Q1","Q2 4760 PRINT" 1 2 3 4 5 6 7 8" 4770 PRINT" ----- ----- ----- ----- ----- ----- ----- -----" 4780 FOR I=1TO8 4790 N1$="# ### ### ### ### ### ### ### ###" 4795 PRINT USING N1$,I,Z(I,1),Z(I,2),Z(I,3),Z(I,4),Z(I,5),Z(I,6),Z(I,7),Z(I,8) 4800 PRINT" ----- ----- ----- ----- ----- ----- ----- -----" 4810 NEXT I 4820 GOTO 1270 4821 REM *** STATUS REPORT CODE BEGINS HERE 4830 PRINT " STATUS REPORT" 4840 PRINT "NUMBER OF KLINGONS LEFT ="K9 4850 V5=(T0+T9)-T 4851 PRINT "NUMBER OF STARDATES LEFT =";V5 4860 PRINT "NUMBER OF STARBASES LEFT ="B9 4870 GOTO 3560 4880 PRINT 4881 H8=0 4882 REM *** PHOTON TORPEDO DATA CODE BEGINS HERE 4900 FOR I=1TO3 4910 IF K(I,3)<=0 THEN 5260 4920 C1=S1 4921 A=S2 4922 W1=K(I,1) 4923 X=K(I,2) 4960 GOTO 5010 4970 PRINT"YOU ARE AT QUADRANT ( ";Q1;",";Q2;" ) SECTOR ( ";S1;",";S2;" )" 4990 INPUT "SHIP AND TARGET COORDINATES ARE:";C1,A,W1,X 5010 X=X-A 5011 A=C1-W1 5030 IF X<0 THEN 5130 5031 IF A<0 THEN 5190 5050 IF X>0 THEN 5070 5051 IF A=0 THEN 5150 5070 C1=1 5080 IF ABS(A) <= ABS(X) THEN 5110 5085 V5=C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)) 5090 PRINT "DIRECTION ="V5 5100 GOTO 5240 5110 PRINT "DIRECTION ="C1+(ABS(A)/ABS(X)) 5120 GOTO 5240 5130 IF A>0 THEN 5170 5140 IF X=0 THEN 5190 5150 C1=5 5151 GOTO 5080 5170 C1=3 5171 GOTO5200 5190 C1=7 5200 IF ABS(A)>=ABS(X) THEN 5230 5210 PRINT "DIRECTION ="C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)) 5220 GOTO 5240 5230 PRINT "DIRECTION ="C1+(ABS(X)/ABS(A)) 5240 PRINT "DISTANCE ="SQR(X**2+A**2) 5250 IF H8=1 THEN 5320 5260 NEXT I 5270 H8=0 5280 INPUT "DO YOU WANT TO USE THE CALCULATOR";A$ 5300 IF A$="YES" THEN 4970 5310 IF A$<>"NO" THEN 5280 5320 GOTO 1270 5321 REM *** END OF LIBRARY COMPUTER CODE 5380 R1=INT(RND(1)*8+1) 5381 R2=INT(RND(1)*8+1) 5382 A$=" " 5383 Z1=R1 5384 Z2=R2 5430 GOSUB 5680 5440 IF Z3=0 THEN 5380 5450 RETURN 5510 REM *** INSERTION IN STRING ARRAY FOR QUADRANT *** 5520 S8=Z1*24+Z2*3-26 5521 IF S8>72 THEN 5560 5540 Q$=LEFT(Q$,S8-1)+A$+RIGHT(Q$,S8+3) 5550 GOTO 5600 5560 IF S8>144 THEN 5590 5570 R$=LEFT(R$,S8-73)+A$+RIGHT(R$,S8-69) 5580 GOTO 5600 5590 S$=LEFT(S$,S8-145)+A$+RIGHT(S$,S8-141) 5600 RETURN 5610 REM *** PRINTS DEVICE NAME FROM ARRAY*** 5620 S8=R1*12-11 5621 IF S8>72 THEN 5660 5640 PRINT MID(D$,S8,11), 5641 GOTO 5670 5660 PRINT MID(E$,S8-72,11), 5670 RETURN 5680 REM ***STRING COMPARISON IN QUADRANT ARRAY*** 5690 S8=Z1*24+Z2*3-26 5691 Z3=0 5692 IF S8>72 THEN 5750 5720 IF MID(Q$,S8,3)<>A$ THEN 5810 5730 Z3=1 5731 GOTO 5810 5750 IF S8>144 THEN 5790 5760 IF MID(R$,S8-72,3)<>A$ THEN 5810 5770 Z3=1 5771 GOTO 5810 5790 IF MID(S$,S8-144,3)<>A$ THEN 5810 5800 Z3=1 5810 RETURN 5820 &" INSTRUCTIONS" 5821 &:&"THE GALAXY IS DIVIDED INTO AN 8,8 QUADRANT GRID" 5822 &"WHICH IS IN TURN DIVIDED INTO AN 8,8 SECTOR GRID." 5823 &:&"THE CAST OF CHARACTERS IS AS FOLLOWS:" 5830 &"<*> = ENTERPRISE" 5840 &"+++ = KLINGON" 5850 &">!< = STARBASE":& " * = STAR" 5870 &"COMMAND 0 = WARP ENGINE CONTROL:" 5880 &" COURSE IS IN A CIRCULAR NUMERICAL 4 3 2" 5890 &" VECTOR ARRANGEMENT AS SHOWN. \ ^ /" 5900 &" INTEGER AND REAL VALUES MAY BE \^/" 5910 &" USED. THEREFORE COURSE 1.5 IS 5 ----- 1" 5920 &" HALF WAY BETWEEN 1 AND 2. /^\" 5930 &" / ^ \" 5940 &" A VECTOR OF 9 IS UNDEFINED, BUT 6 7 8" 5950 &" VALUES MAY APPROACH 9." 5960 &" COURSE" 5970 &" ONE WARP FACTOR IS THE SIZE OF" 5980 &" ONE QUADRANT. THEREFORE TO GET" 5990 &" FROM QUADRANT 6,5 TO 5,5 YOU WOULD" 6000 &" USE COURSE 3. WARP FACTOR 1" 6005 & 6010 &"COMMAND 1 = SHORT RANGE SENSOR SCAN" 6020 &" PRINT THE QUADRANT YOU ARE CURRENTLY IN. INCLUDING" 6030 &" STARS, KLINGONS, STARBASES, AND THE ENTERPRISE, ALONG" 6040 &" WITH OTHER PERTINATE INFORMATION." 6045 &:&"COMMAND 2 = LONG RANGE SENSOR SCAN" 6060 &" SHOWS CONDITIONS IN SPACE FOR ONE QUADRANT ON EACH SIDE" 6070 &" OF THE ENTERPRISE IN THE MIDDLE OF THE SCAN. THE SCAN" 6080 &" IS CODED IN THE FORM XXX, WHERE THE UNITS DIGIT IS THE " 6090 &" NUMBER OF STARS, THE TENS DIGIT IS THE NUMBER OF STAR-" 6100 &" BASES. THE HUNDREDS DIGIT IS THE NUMBER OF KLINGONS." 6110 &:&"COMMAND 3 = PHASER CONTROL" 6120 &" ALLOWS YOU TO DESTROY THE KLINGONS BY HITTING HIM WITH" 6130 &" SUITABLY LARGE NUMBERS OF ENERGY UNITS TO DEPLETE HIS " 6140 &" SHIELD POWER. KEEP IN MIND THAT WHEN YOU SHOOT AT HIM," 6150 &" HE GONNA SHOOT AT YOU, TOO!" 6160 &:&"COMMAND 4 = PHOTON TORPEDO CONTROL" 6170 &" COURSE IS THE SAME AS USED IN WARP ENGINE CONTROL" 6180 &" IF YOU HIT THE KLINGON, HE IS DESTROYED AND CANNOT FIRE" 6190 &" BACK AT YOU. IF YOU MISS, YOU ARE SUBJECT TO HIS " 6200 &" PHASER FIRE." 6210 &:&" NOTE: THE LIBRARY COMPUTER (COMMAND 7) HAS AN OPTION" 6220 &" TO COMPUTE TORPEDO TRAJECTORY FOR YOU (OPTION 2)." 6230 &:&"COMMAND 5 = SHIELD CONTROL" 6240 &" DEFINES NUMBER OF ENERGY UNITS TO BE ASSIGNED TO SHIELDS" 6250 &" ENERGY IS TAKEN FROM TOTAL SHIP'S ENERGY." 6251 &" NOTE THAT TOTAL ENERY INCLUDES SHIELD ENERGY." 6260 &:&"COMMAND 6 = DAMAGE CONTROL REPORT" 6270 &" GIVES STATE OF REPAIRS OF ALL DEVICES. A STATE OF REPAIR" 6280 &" LESS THAN ZERO SHOWS THAT THE DEVICE IS TEMPORARALY" 6290 &" DAMAGED." 6300 &:&"COMMAND 7 = LIBRARY COMPUTER" 6310 &" THE LIBRARY COMPUTER CONTAINS THREE OPTIONS:" 6320 &" OPTION 0 = CUMULATIVE GALACTIC RECORD" 6330 &" WHICH SHOWS COMPUTER MEMORY OF THE RESULTS" 6340 &" OF ALL PREVIOUS LONG RANGE SENSOR SCANS" 6350 &" OPTION 1 = STATUS REPORT" 6360 &" WHICH SHOWS NUMBER OF KLINGONS, STARDATES," 6370 &" AND STARBASES LEFT." 6380 &" OPTION 2 = PHOTON TORPEDO DATA" 6390 &" GIVES TRAJECTORY AND DISTANCE BETWEEN THE" 6400 &" ENTERPRISE AND ALL KLINGONS IN YOUR QUADRANT" 6500 GOTO 230 6510 END