00100 REM *** PROGRAM SIMULATES TV PROGRAM STARTREK 00110 REM *** WRITTEN BY MIKE MAYFIELD, CENTERLINE ENGINEERING 00170 RANDOMIZE 00180 PRINT " * * * STAR TREK * * *" 00181 PRINT 00200 INPUT "DO YOU WANT INSTRUCTIONS (THEY'RE LONG!) (Y/[N])";A$ 00210 IF A$="YES" OR A$="yes" OR A$="Y" OR A$="y" THEN 5820 00230 REM *** PROGRAM BEGINS HERE 00240 Z$,R$,Q$=" " 00260 DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8) 00290 T0,T=INT(RND*20+20)*100 00300 T9=30 00301 D0=0 00302 E0,E=3000 00303 P0,P=10 00304 S9=200 00305 S,H8=0 00360 DEF FND(D)=SQR((K(I,1)-S1)**2+(K(I,2)-S2)**2) 00370 Q1=INT(RND*8+1) 00380 Q2=INT(RND*8+1) 00390 S1=INT(RND*8+1) 00400 S2=INT(RND*8+1) 00410 T7=TIME(0) 00420 C(2,1),C(3,1),C(4,1),C(4,2),C(5,2),C(6,2)=-1 00430 C(1,1),C(3,2),C(5,1),C(7,2),C(9,1)=0 00440 C(1,2),C(2,2),C(6,1),C(7,1),C(8,1),C(8,2),C(9,2)=1 00450 MAT D=ZER 00460 D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL" 00470 D$=D$+"PHOTON TUBESDAMAGE CNTRL" 00480 E$="SHIELD CNTRLCOMPUTER" 00490 B9,K9=0 00491 REM *** SETS UP WHAT EXISTS IN GALAXY 00500 FOR I=1 TO 8 00510 FOR J=1 TO 8 00520 R1=RND 00530 IF R1>.98 THEN 580 00540 IF R1>.95 THEN 610 00550 IF R1>.8 THEN 640 00560 K3=0 00561 GOTO 660 00580 K3=3 00581 K9=K9+3 00582 GOTO 660 00610 K3=2 00611 K9=K9+2 00612 GOTO 660 00640 K3=1 00641 K9=K9+1 00660 R1=RND 00670 IF R1>.96 THEN 700 00680 B3=0 00681 GOTO 720 00700 B3=1 00701 B9=B9+1 00720 S3=INT(RND*8+1) 00730 G(I,J)=K3*100+B3*10+S3 00740 Z(I,J)=0 00750 NEXT J 00760 NEXT I 00770 K7=K9 00775 PRINT 00776 PRINT 00780 PRINT"YOU MUST DESTROY";K9;" KLINGONS IN";T9;" STARDATES WITH ";B9;" STARBASES" 00790 IF B9>0 THEN 810 00800 G(6,3)=114 00810 K3,B3,S3=0 00820 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 920 00830 X=G(Q1,Q2)*.01 00840 K3=INT(X) 00850 B3=INT((X-K3)*10) 00860 S3=G(Q1,Q2)-INT(G(Q1,Q2)*.1)*10 00870 IF K3=0 THEN 910 00880 IF S>200 THEN 910 00890 PRINT"COMBAT AREA CONDITION RED" 00900 PRINT" SHIELDS DANGEROUSLY LOW" 00910 MAT K=ZER 00920 FOR I=1 TO 3 00930 K(I,3)=0 00940 NEXT I 00950 Q$=Z$ 00951 R$=Z$ 00970 S$=MID(Z$,1,48) 00971 REM *** PUT ENTERPRISE SOMEWHERE 00980 A$="<*>" 00990 Z1=S1 01000 Z2=S2 01010 GOSUB 5510 01020 FOR I=1 TO K3 01030 GOSUB 5380 01031 REM *** PUT KLINGONS SOMEWHERE 01040 A$="+++" 01050 Z1=R1 01060 Z2=R2 01070 GOSUB 5510 01080 K(I,1)=R1 01081 K(I,2)=R2 01082 K(I,3)=S9 01110 NEXT I 01120 FOR I=1 TO B3 01130 GOSUB 5380 01131 REM *** PUT STARBASE(S) SOMEWHERE 01140 A$=">!<" 01141 Z1=R1 01142 Z2=R2 01170 GOSUB 5510 01180 NEXT I 01190 FOR I=1 TO S3 01200 GOSUB 5380 01201 REM *** PUT STARS SOMEWHERE 01210 A$=" * " 01211 Z1=R1 01212 Z2=R2 01240 GOSUB 5510 01250 NEXT I 01260 GOSUB 4120 01270 INPUT "COMMAND:";A 01290 IF A=0 GOTO 1410 01291 IF A=1 GOTO 1260 01292 IF A=2 GOTO 2330 01293 IF A=3 GOTO 2530 01294 IF A=4 GOTO 2800 01295 IF A=5 GOTO 3460 01296 IF A=6 GOTO 3560 01297 IF A=7 GOTO 4630 01298 IF A=8 GOTO 6510 01310 PRINT 01311 PRINT" 0 = SET COURSE" 01320 PRINT" 1 = SHORT RANGE SENSOR SCAN" 01330 PRINT" 2 = LONG RANGE SENSOR SCAN" 01340 PRINT" 3 = FIRE PHASERS" 01350 PRINT" 4 = FIRE PHOTON TORPEDOES" 01360 PRINT" 5 = SHIELD CONTROL" 01370 PRINT" 6 = DAMAGE CONTROL REPORT" 01380 PRINT" 7 = CALL ON LIBRARY COMPUTER" 01390 PRINT" 8 = END THE CONTEST" 01391 PRINT 01400 GOTO 1270 01401 REM *** COURSE CONTROL CODE BEGINS HERE 01410 INPUT "COURSE (1-9):";C1 01430 IF C1=0 THEN 1270 01440 IF C1<1 OR C1>9 THEN 1410 01450 INPUT "WARP FACTOR (0-8):";W1 01470 IF W1<0 OR W1>8 THEN 1410 01480 IF D(1)>=0 OR W1<=.2 THEN 1510 01490 PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2" 01500 GOTO 1410 01510 IF K3<=0 THEN 1560 01520 GOSUB 3790 01530 IF K3<=0 THEN 1560 01540 IF S<0 THEN 4000 01550 GOTO 1610 01560 IF E>0 THEN 1610 01570 IF S<1 THEN 3920 01580 PRINT "YOU HAVE";E;" UNITS OF ENERGY" 01590 PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS WHICH HAVE";S;" UNITS LEFT" 01600 GOTO 1270 01610 FOR I=1 TO 8 01611 IF D(I)>=0 THEN 1640 01612 REM *** FIX ANY DAMAGED DEVICE 01630 D(I)=D(I)+1 01640 NEXT I 01650 IF RND>.2 THEN 1810 01660 R1=INT(RND*8+1) 01670 IF RND>= .5 THEN 1750 01680 D(R1)=D(R1)-(RND*5+1) 01690 PRINT 01691 PRINT "DAMAGE CONTROL REPORT:"; 01710 GOSUB 5610 01720 PRINT" DAMAGED" 01721 PRINT 01722 GOTO 1810 01750 D(R1)=D(R1)+(RND*5+1) 01760 PRINT 01761 PRINT "DAMAGE CONTROL REPORT:"; 01780 GOSUB 5610 01790 PRINT" STATE OF REPAIR IMPROVED" 01791 PRINT 01810 N=INT(W1*8) 01811 A$=" " 01812 Z1=S1 01813 Z2=S2 01850 GOSUB 5510 01860 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)) 01870 X=S1 01871 Y=S2 01890 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)) 01900 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)) 01910 FOR I=1 TO N 01911 S1=S1+X1 01912 S2=S2+X2 01940 IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 2170 01950 S8=S1*24+S2*3-26 01951 IF S8>72 THEN 1990 01970 IF MID(Q$,S8,3)=" " THEN 2070 01980 GOTO 2030 01990 IF S8>144 THEN 2020 02000 IF MID(R$,S8-72,3)=" " THEN 2070 02010 GOTO 2030 02020 IF MID(S$,S8-144,3)=" " THEN 2070 02030 PRINT"WARP ENGINES SHUTDOWN AT SECTOR ";S1;",";S2;" DUE TO BAD NAVAGATION" 02040 S1=S1-X1 02041 S2=S2-X2 02042 GOTO 2080 02070 NEXT I 02080 A$="<*>" 02081 Z1=S1 02082 Z2=S2 02110 GOSUB 5510 02120 E=E-N+5 02121 IF W1<1 THEN 2150 02140 T=T+1 02150 IF T>T0+T9 THEN 3970 02160 GOTO 1260 02170 X=Q1*8+X+X1*N 02171 Y=Q2*8+Y+X2*N 02190 Q1=INT(X/8) 02191 Q2=INT(Y/8) 02192 S1=INT(X-Q1*8) 02193 S2=INT(Y-Q2*8) 02230 IF S1<>0 THEN 2260 02240 Q1=Q1-1 02241 S1=8 02260 IF S2<>0 THEN 2290 02270 Q2=Q2-1 02271 S2=8 02290 T=T+1 02291 E=E-N+5 02310 IF T>T0 + T9 THEN 3970 02320 GOTO 810 02321 REM *** LONG RANGE SENSON SCAN CODE BEGINS HERE 02330 IF D(3)>=0 THEN 2370 02340 PRINT "LONG RANGE SENSORS ARE INOPERABLE" 02360 GOTO 1270 02370 PRINT"LONG RANGE SENSOR SCAN FOR QUADRANT ";Q1;",";Q2 02380 PRINT"-------------------" 02390 FOR I=Q1-1 TO Q1+1 02400 MAT N=ZER 02410 FOR J=Q2-1 TO Q2+1 02420 IF I<1 OR I>8 OR J<1 OR J>8 THEN 2460 02430 N(J-Q2+2)=G(I,J) 02440 IF D(7)<0 THEN 2460 02450 Z(I,J)=G(I,J) 02460 NEXT J 02470 P1$=": ### : ### : ### :" 02471 PRINT USING P1$,N(1),N(2),N(3) 02480 PRINT"-------------------" 02490 NEXT I 02500 GOTO 1270 02501 REM *** PHASER CONTROL CODE BEGINS HERE 02530 IF K3<=0 THEN 3670 02540 IF D(4)>=0 THEN 2570 02560 GOTO 1270 02570 IF D(7)>=0 THEN 2590 02580 PRINT " COMPUTER FAILURE HAMPERS ACCURACY" 02590 PRINT"PHASERS LOCKED ON TARGET. ENERGY AVAILABLE=";E 02600 INPUT "NUMBER OF UNITS TO FIRE:";X 02620 IF X<=0 THEN 1270 02630 IF E-X<0 THEN 2570 02640 E=E-X 02650 GOSUB 3790 02660 IF D(7)>=0 THEN 2680 02670 X=X*RND 02680 FOR I=1 TO 3 02690 IF K(I,3)<=0 THEN 2770 02700 H=INT((X/K3/FND(0))*(2*RND)) 02710 K(I,3)=K(I,3)-H 02720 PRINT H;" UNIT HIT ON KLINGON AT SECTOR ";K(I,1);",";K(I,2); 02721 PRINT" (";K(I,3);" LEFT)" 02740 IF K(I,3)>0 THEN 2770 02750 GOSUB 3690 02760 IF K9<=0 THEN 4040 02770 NEXT I 02780 IF E<0 THEN 4000 02790 GOTO 1270 02791 REM *** PHOTON TORPEDO CODE BEGINS HERE 02800 IF D(5)>=0 THEN 2830 02810 PRINT "PHOTON TUBES ARE NOT OPERATIONAL" 02820 GOTO 1270 02830 IF P>0 THEN 2860 02840 PRINT "ALL PHOTON TORPEDOES EXPENDED" 02850 GOTO 1270 02860 INPUT "TORPEDO COURSE (1-9):";C1 02880 IF C1=0 THEN 1270 02890 IF C1<1 OR C1>=9 THEN 2860 02900 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)) 02910 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)) 02920 X=S1 02921 Y=S2 02922 P=P-1 02950 PRINT "TORPEDO TRACK:" 02960 X=X+X1 02961 Y=Y+X2 02980 IF X<1 OR X>=9 OR Y<1 OR Y>=9 THEN 3420 02990 PRINT" ";X;",";Y 03010 A$=" " 03011 Z1=X 03012 Z2=Y 03040 GOSUB 5680 03050 IF Z3=0 THEN 3070 03060 GOTO 2960 03070 A$="+++" 03071 Z1=X 03072 Z2=Y 03100 GOSUB 5680 03110 IF Z3=0 THEN 3220 03120 PRINT "*** KLINGON DESTROYED ***" 03130 K3=K3-1 03131 K9=K9-1 03150 IF K9<=0 THEN 4040 03160 FOR I=1 TO 3 03161 IF INT(X)<>K(I,1) THEN 3190 03180 IF INT(Y)=K(I,2)