10 REM ... STREK.ECB ... Last change 02-21-81 R.E.H. 100 REM ... WRITTEN AT THE UNIVERSITY OF ALABAMA 110 REM ... BY MIKE VAN PELT AND PRESENTED TO YOU 120 REM ... COURTESY OF THE DEMONSTRATION PROGRAM 130 REM ... PEOPLE AT THE U OF ALABAMA. ROLL TIDE! 140 PRINT "&K": CURSOR 5,1 150 PRINT " ** UNIV. OF ALABAMA-STAR TREK SIMULATION **&J" 160 PRINT 170 DIM F(3),E(3),V(3),W(3),A(3),B(3),C(26),P(26),T(3) 180 DIM K$(3),U(3),Y(3),Z(3),G(3),H(3),R(3),Q(26,3),O(3) 190 READ F(1),F(2),F(3),E(1),E(2),E(3) 200 DATA 50,50,50,100,100,100 210 PRINT "DO YOU NEED INSTRUCTIONS "; 220 INPUT (1,0)K$: PRINT "&K" 230 IF K$="Y" THEN 1950 240 REM .... RANDOMIZE 250 FOR I=1 TO 3 260 LET V(I)=3*RND(0)-1.5 270 LET W(I)=3*RND(0)-1.5 280 NEXT I 290 FOR I=1 TO 26: REM ....WAS--> MAT READ Q 295 FOR X=1 TO 3: READ Q(I,X): NEXT X 299 NEXT I 300 DATA 1,1,1,1,1,0,1,1,-1,1,0,1,1,0,0,1,0,-1,1,-1,1,1 310 DATA -1,0,1,-1,-1,0,1,1,0,1,0,0,1,-1,0,0,1,0,0,-1,0 320 DATA -1,1,0,-1,0,0,-1,-1,-1,1,1,-1,1,0,-1,1,-1,-1,0 330 DATA 1,-1,0,0,-1,0,-1,-1,-1,1,-1,-1,0,-1,-1,-1 340 PRINT " INPUT IMPULSE, PRESENT POSITION:" 350 PRINT F(1);F(2);F(3) 360 PRINT " VELOCITY ",V(1),V(2),V(3) 370 INPUT "---=>",G(1),G(2),G(3): PRINT 380 FOR I=1 TO 3: LET U(I)=F(I)+A(I): NEXT I 390 FOR I=1 TO 3: LET U(I)=U(I)+V(I): NEXT I 400 FOR I=1 TO 3 410 LET O(I)=O(I)+ABS(G(I))-50 420 IF O(I)>0 THEN 440 430 LET O(I)=0 440 IF O(I)<150 THEN 490 450 LET A(I)=0 460 PRINT " IMPULSE THRUSTER # ";I; 470 PRINT " DISABLED DUE TO OVERHEATING" 480 GOTO 500 490 LET A(I)=G(I)/100 500 REM ......... CONTINUE 510 NEXT I 520 FOR I=1 TO 3: LET V(I)=V(I)+A(I): NEXT I 530 FOR I=1 TO 3: LET F(I)=F(I)+V(I): NEXT I 535 LET F1=F(1)-E(1): LET F2=F(2)-E(2): LET F3=F(3)-E(3) 540 LET D=SQR((F1*F1)+(F2*F2)+(F3*F3)) 550 IF D<>0 THEN 590 560 PRINT " WARNING... COLLISION COURSE. "; 570 PRINT " <<<<<<>>>>>>" 580 GOTO 1630 590 PRINT " INPUT TARGET COORDINATES FOR PHOTON TORPEDO" 600 PRINT " , KLINGON AT ";E(1);E(2);E(3) 610 PRINT " VELOCITY: ",W(1),W(2),W(3) 620 PRINT " RANGE: ";D 630 INPUT "---=>",T(1),T(2),T(3): PRINT 640 LET E=EXP(D/1000) 650 FOR I=1 TO 3 660 LET T(I)=T(I)+RND(0)*E-.5*E 670 NEXT I 680 FOR I=1 TO 3: LET R(I)=E(I)-F(I): NEXT I 690 IF ABS(R(1))1 THEN EXIT 1210 930 NEXT I 940 LET X1=(ABS(Z(1))+ABS(Z(2))+ABS(Z(3))) 950 IF INT(X1+.9)=1 THEN 1000 960 IF INT(X1+.9)=2 THEN 1020 970 IF INT(X1+.9)=3 THEN 1040 980 PRINT " DIRECT HIT "; 990 GOTO 1050 1000 PRINT " MAJOR HIT "; 1010 GOTO 1050 1020 PRINT " A HIT "; 1030 GOTO 1050 1040 PRINT " MINOR HIT "; 1050 FOR I=1 TO 26 1060 IF Q(I,1)<>INT(Z(1)+.5*SGN(Z(1))) THEN 1100 1070 IF Q(I,2)<>INT(Z(2)+.5*SGN(Z(2))) THEN 1100 1080 IF Q(I,3)<>INT(Z(3)+.5*SGN(Z(3))) THEN 1100 1090 EXIT 1110 1100 NEXT I 1110 PRINT " ON KLINGON'S # ";I;" DEFLECTOR "; 1120 LET C(I)=C(I)+EXP(3-X1)/4.017108 1130 IF C(I)<5 THEN 1190 1140 PRINT 1150 PRINT " PHOTON TORPEDO HAS BROKEN THROUGH KLINGON'S" 1160 PRINT " DEFLECTORS.......... KLINGON SHIP BREAKING UP" 1170 PRINT " YOU HAVE WON THIS ENGAGEMENT. CONGRATULATIONS!" 1180 GOTO 1940 1190 PRINT " , THAT DEFLECTOR NOW DOWN TO ";((5-C(I))/5)*100;"%" 1200 GOTO 1280 1210 FOR I=1 TO 26 1220 LET C(I)=C(I)+.1 1230 IF C(I)>0 THEN 1250 1240 LET C(I)=0 1250 NEXT I 1260 PRINT " YOU MISSED. ERROR WAS "; 1265 LET F1=E(1)-T(1): LET F2=E(2)-T(2): LET F3=E(3)-T(3) 1270 PRINT SQR((F1*F1)+(F2*F2)+(F3*F3)) 1280 REM ......... NOW THEN KLINGON SHOOTS BACK 1290 FOR I=1 TO 3 1300 PRINT 1310 NEXT I 1320 PRINT " ***KLINGON FIRING**" 1330 FOR I=1 TO 3 1340 LET U(I)=U(I)+RND(0)*E-.5*E 1350 NEXT I 1360 FOR I=1 TO 3: LET Y(I)=U(I)-F(I): NEXT I 1370 FOR I=1 TO 3 1380 IF ABS(Y(I))>1 THEN EXIT 1690 1390 NEXT I 1400 LET X1=(ABS(Y(1))+ABS(Y(2))+ABS(Y(3))) 1410 IF INT(X1+.9)=1 THEN 1460 1420 IF INT(X1+.9)=2 THEN 1480 1430 IF INT(X1+.9)=3 THEN 1500 1440 PRINT "DIRECT HIT "; 1450 GOTO 1510 1460 PRINT " MAJOR HIT "; 1470 GOTO 1510 1480 PRINT " A HIT "; 1490 GOTO 1510 1500 PRINT " MINOR HIT "; 1510 FOR I=1 TO 26 1520 IF Q(I,1)<>INT(Y(1)+.5*SGN(Y(1))) THEN 1560 1530 IF Q(I,2)<>INT(Y(2)+.5*SGN(Y(2))) THEN 1560 1540 IF Q(I,3)<>INT(Y(3)+.5*SGN(Y(3))) THEN 1560 1550 EXIT 1570 1560 NEXT I 1570 PRINT " ON # ";I;" DEFLECTOR "; 1580 LET P(I)=P(I)+EXP(3-X1)/4.017108 1590 IF P(I)<5 THEN 1670 1600 PRINT 1610 PRINT " KLINGON TORPEDO HAS BROKEN THROUGH DEFLECTOR" 1620 PRINT " ...<<<<>>>>" 1630 PRINT " HOW DOES IT FEEL TO BE A CLOUD OF THINLY" 1640 PRINT " SCATTERED SUB-ATOMIC PARTICLES? "; 1650 INPUT N$ 1660 GOTO 1940 1670 PRINT " NOW DOWN TO ";((5-P(I))/5)*100;"% POWER" 1680 GOTO 1770 1690 PRINT " KLINGON HAS FIRED AND MISSED BY " 1695 LET F1=F(1)-U(1): LET F2=F(2)-U(2): LET F3=F(3)-U(3) 1700 PRINT SQR((F1*F1)+(F2*F2)+(F3*F3)) 1710 FOR I=1 TO 26 1720 LET P(I)=P(I)-.1 1730 IF P(I)>0 THEN 1750 1740 LET P(I)=0 1750 REM ......... 1760 NEXT I 1770 PRINT " DO YOU WANT SHIP STATUS REPORT "; 1780 INPUT (1,0)K$: PRINT "&K" 1790 IF K$="N" THEN 340 1800 IF K$="Y" THEN 1830 1810 PRINT K$;" INVALID COMMAND" 1820 GOTO 1770 1830 PRINT 1840 FOR I=1 TO 26 1850 IF P(I)=0 THEN 1870 1860 PRINT " DEFLECTOR #";I;" AT ";((5-P(I))/5)*1;"%" 1870 NEXT I 1880 FOR I=1 TO 3 1890 IF O(I)=0 THEN 1910 1900 PRINT " IMPULSE THRUSTER #";I;" AT ";O(I)/1.5;"% OVERLOAD" 1910 NEXT I 1920 PRINT 1930 GOTO 340 1940 GOTO 2290 1950 PRINT 1960 PRINT " YOU ARE THE CAPTAIN OF THE STAR SHIP" 1970 PRINT " 'ENTERPRISE'. YOU ARE UNDER ATTACK BY A" 1980 PRINT " KLINGON BATTLE CRUSER. YOU FIRE PHOTON" 1990 PRINT " BY INPUTING THE KLINGON'S MOST PROBABLE NEXT" 2000 PRINT " POSITION. THE KLINGON DOES THE SAME TO" 2010 PRINT " FIRE AT YOU. YOU MOVE" 2020 PRINT 2030 PRINT " =====READY FOR MORE?===== "; 2040 INPUT (1,200)I$: PRINT "&K&J&J" 2050 PRINT 2060 PRINT " BY INPUTING YOUR THRUST IN MEGANEWTONS." 2070 PRINT " FOR EACH OF YOUR THREE THRUSTERS, POSITIVE" 2080 PRINT " VALUE. FOR FORWARD MOTION AND NEGATIVE VALUE" 2090 PRINT " FOR REVERSE. AT A THRUST OF > 50 MEGANEWTONS," 2100 PRINT " THRUSTERS WILL OVERHEAT, AND THE CIRCUIT" 2110 PRINT " BREAKERS WILL CUT OUT. A MESSAGE WILL BE" 2120 PRINT " PRINTED OUT TO THIS EFFECT." 2130 PRINT " (THRUST OF 50 CAN BE MAINTAINED" 2140 PRINT " INDEFINITLY, THRUST OF 100" 2150 PRINT " =====READY FOR MORE?===== "; 2160 INPUT (1,200)I$: PRINT "&K&J&J" 2170 PRINT 2180 PRINT " FOR ONLY ONE OR TWO TURNS, ETC)" 2190 PRINT " AFTER OVERUSE OF THRUSTER, THEY" 2200 PRINT " MUST BE ALLOWED TO COOL DOWN BEFORE USING THEM" 2210 PRINT " AT MAXIMUM AGAIN." 2220 PRINT " SINCE THIS INPUT RESULTS IN AN ACCELERATION," 2230 PRINT " THE NEW POSITION IS THE OLD POSITION" 2240 PRINT " +VELOCITY+ ACCELERATION. THIS SHOULD BE" 2250 PRINT " PLANNED FOR WHEN FIRING AT THE KLINGON." 2260 PRINT " ACCELERATION=THRUST/100&J" 2270 GOTO 240 2290 END