30 'PROGRAM TITLE: STARTREK 40 ' ADAPTED FROM LEVEL I TO LEVEL 2 BY R K CURTIS --AUG 1978 50 ' ADAPTED FOR MODEL 100 04-SEP-83 60 DEFSNG A-Z:DIM A(1000) 80 A=VAL(RIGHT$(TIME$,2)):FORI=1TOA:A=RND(1):NEXTI:I=0:A=0 90 DD=INT(RND(1)*100+2400) 100 CLS 110 PRINT"********** S T A R T R E K **********" 140 PRINT@80,"DO YOU WANT A DIFFICULT GAME? (Y/N)"; 150 A$=INKEY$:IF A$="" THEN 150 ELSE IFA$="N"ORA$="n"THENY=2999:GOTO160ELSE IFA$="Y"ORA$="y"THENY=999ELSEPRINTA$:PRINT"ONLY Y OR N !":FORII=1TO500:NEXTII:GOTO100 160 CLS:A$="STARDATE"+STR$(DD):B$=CHR$(27)+"p":C$=CHR$(27)+"q" 170 PRINT A$ 180 K=0:B=0:D=30:FORI=0TO63:J=-(RND(1)*99<5):B=B+J 190 M=INT(RND(1)*Y):M=-(M<209)OR-(M<99)OR-(M<49)OR-(M<24)OR-(M<9)OR-(M<2):K=K+M 200 IF FS=0 THEN PRINT@0,B$+A$;:FS=1:ELSE FS=0:PRINT@0,C$+A$; 210 A(I)=INT(-100*M-10*J-RND(1)*7+1):NEXTI:IF(B<2)OR(K<4)THEN 180 220 PRINT:PRINTC$+"YOU WILL BE PLACED AT A STARTING POINT 222 PRINT"SOMEWHERE IN THE GALAXY TO BEGIN A TOUR 230 PRINT"OF DUTY AS COMMANDER OF THE STARSHIP 235 PRINT"'ENTERPRISE'." 240 PRINT" O R D E R S: YOUR MISSION IS 250 PRINT"TO SEEK AND DESTROY THE FLEET OF";K 252 PRINTB$+"HIT 'ENTER' "+C$;:LINEINPUTZ$ 255 PRINT"KLINGON WARSHIPS WHICH ARE MENACING 260 PRINT"THE UNITED FEDERATION OF PLANETS. 270 PRINT "YOU HAVE THIRTY STARDATES TO ACCOMPLISH 290 PRINT"THIS! THERE ARE ";B;" STARBASES." 295 PRINT"(USE AN 'L' COMMAND TO UPDATE YOUR 297 PRINT"GALAXY MAP.)" 298 PRINTB$+"HIT 'ENTER' TO ASSUME COMMAND"+C$;:LINEINPUTZ$:CLS 300 GOSUB 610 :C=0:H=K 310 U=INT(RND(1)*7+1):V=INT(RND(1)*7+1):X=INT(RND(1)*7+1):Y=INT(RND(1)*7+1) 320 FORI=71TO152:A(I)=0:NEXTI 322 A(8*X+Y+62)=4 324 M=ABS(A(8*U+V-9)) 326 N=M/100 330 N=INT(N) 340 I=1:IFNTHENFORJ=1TON:GOSUB 620 :A(J+134)=300:A(J+140)=S:A(J+146)=T:NEXTJ 350 GOSUB 640 :M=M-100*N:I=2:IF(INT(M/10))THEN GOSUB 620 360 M=M-INT(M/10)*10:I=3 370 IFMTHENFORJ=1TOM:GOSUB 620 :NEXTJ 380 GOSUB 580 :GOSUB 1050 :IFKTHEN 440 390 PRINT:PRINT"MISSION ACCOMPLISHED.":IFD<3THENPRINT"BOY, YOU BARELY MADE IT." 400 IFD>5THENPRINT"GOOD WORK...":IFD>9THENPRINT"FANTISTIC!":IFD>13THENPRINT"UNBELIEVABLE!" 410 D=30-D:I=H*INT(100/D)*10:PRINTH;"KLINGONS IN ";D;" STARDATES. (";I;")" 420 J=100*-5*C:PRINTC;"CASUALTIES INCURRED. (";J;")" 430 PRINT"YOUR SCORE:";I+J:GOTO 480 440 IFD<0THENPRINT"IT'S TOO LATE, THE FEDERATION HAS BEEN CONQUERED.":GOTO 480 450 IFE>=0GOTO 540 460 PRINT"ENTERPRISE DESTROYED":IFH-K>9THENPRINT"BUT YOU WERE A GOOD MAN" 470 Y=1:N=0 480 Y=978:PRINT"ANOTHER GAME? (Y/N)"; 485 Z$=INKEY$:IF Z$=""THEN485ELSEIFZ$<>"N"AND Z$<>"n"THEN CLS:GOTO 140 490 PRINT"GOOD BYE.":STOP 500 S=1:G=2:L=3:P=4:R=5:W=6:T=7:PRINT@313,"CAPT?"; 505 Z$=INKEY$:IF Z$=""THEN505 510 GOSUB 1960 520 IF(A<>INT(A))+(A<1)+(A>7)THENPRINT"BAD INPUT":GOTO 500 ELSE PRINT 530 ONAGOTO 830 , 650 , 750 , 920 , 1240 , 1330 , 1520 540 PRINT"R=REPORT S=SR. SENSOR L=LR. SENSOR" 550 PRINT"G=GALAXY MAP P=PHASER T=TORPEDO" 560 PRINT"W=WARP ENGINES (USE COMPASS CO-ORDINATES 0 DEG'S = )" 570 PRINT"** PLEASE USE ONE OF THESE COMMANDS **":GOTO 500 580 FORI=X+(X>1)TOX-(X<8):FORJ=Y+(Y>1)TOY-(Y<8) 590 IFA(8*I+J+62)<>2THENNEXTJ:NEXTI:O=0:RETURN 600 IFO=0THENPRINT"SULU: 'CAPTAIN, WE ARE DOCKED AT STARBASE!' 610 E=4000:F=10:O=1:FORI=64TO70:A(I)=0:NEXTI:RETURN 620 S=INT(RND(8)*7+1):T=INT(RND(8)*7+1):A=8*S+T+62:IFA(A)GOTO 620 630 A(A)=I:RETURN 640 PRINT"ENTERPRISE: QUADRANT";U;V;"SECTOR";X;Y:RETURN 650 GOSUB 640 :J=2:GOSUB 1150 :IFIGOTO 500 660 PRINT" MAP OF KNOWN GALAXY":FORI=0TO7:FORJ=0TO7:M=A(8*I+J) 670 IF(M>0)THEN 690 680 IF FG=0THENPRINT" * ";:ELSEIFFG=1THENFG=0:PRINT" * "; 690 IF(M>0)*(ABS(M)>99)THENFG=1:PRINT ABS(M);:GOTO 720 700 IF(M>0)*(ABS(M)>9)THENPRINT"";ABS(M);:GOTO 720 710 IF(M>0)*(FG=0)THENPRINT" ";ABS(M); 715 IF(M>0)*(FG=1)THENFG=0:PRINT ABS(M); 720 NEXTJ:FG=0:IFI=7THEN730ELSEPRINT:NEXTI 730 GOSUB 2100 740 GOTO 500 750 GOSUB 640 :J=3:GOSUB 1150 :IFIGOTO 500 760 PRINT:FORI=U-1TOU+1:FORJ=V-1TOV+1:M=8*I+J-9:A=0 770 IF(I>0)*(I<9)*(J>0)*(J<9)THENA=ABS(A(M)):A(M)=A 780 PRINTTAB((J-(V-1))*10);A; 790 NEXTJ 800 PRINT:PRINT 810 NEXTI 820 GOTO 500 830 GOSUB 640 :J=1:GOSUB 1150 :IFIGOTO 500 840 M=8*U+V-9:A(M)=ABS(A(M)) 850 PRINT:FORI=1TO8:PRINTI;:FORJ=1TO8:M=A(8*I+J+62):IFM=0THENPRINT" ."; 860 IFM=1THENPRINT" K"; 870 IFM=2THENPRINT" B"; 880 IFM=3THENPRINT" *"; 890 IFM=4THENPRINT" E"; 900 PRINT" "; 910 NEXTJ:IFI=8THEN912ELSEPRINT:NEXTI 912 GOSUB 2100 915 GOTO 500 920 J=4:GOSUB 1150 :IFIGOTO 500 930 INPUT" ENERGIZED. UNITS TO FIRE ";A:IFA<1GOTO 500 940 IFA>ETHENPRINT"SPOCK: 'WE HAVE ONLY ";E;" UNITS.":GOTO 500 950 E=E-A:IFN<1THENPRINT"PHASER FIRED AT EMPTY SPACE.":GOTO 380 960 A=INT(A/N):FORM=135TO140:IFA(M)=0GOTO 980 970 GOSUB 990 :PRINTS;"UNITS HIT ";:GOSUB 1010 980 NEXTM:GOTO 380 990 IFA>1090THENPRINT"...OVERLOADED..":J=4:A(67)=1:A=9:GOSUB 1150 1000 I=A(M+6)-X:J=A(M+12)-Y:S=INT(A*30/(30+I*I+J*J))+1:RETURN 1010 PRINT:PRINT"KLINGON AT SECTOR";A(M+6);A(M+12);:A(M)=A(M)-S 1020 IFA(M)>0THENPRINT" **DAMAGED**":RETURN 1030 A(M)=0:I=8*U+V-9:J=INT(A(I)/ABS(A(I))):A(I)=A(I)-100*J:K=K-1 1040 I=8*A(M+6)+A(M+12)+62:A(I)=0:N=N-1:PRINT" ***DESTROYED***":RETURN 1050 IFN=0THENRETURN 1060 PRINT"KLINGON ATTACK":IFOTHENPRINT"STARBASE PROTECTS ENTERPRISE":RETURN 1070 T=0:FORM=135TO140:IFA(M)=0GOTO 1100 1080 A=INT((A(M)+RND(1)*(A(M)))/2):GOSUB 990 :T=T+S:I=A(M+6):J=A(M+12) 1090 PRINTS;"UNITS HIT FROM KLINGON AT SECTOR";I;J 1100 NEXTM:E=E-T:IFE<=0THENPRINT"*** BANG ***":RETURN 1110 PRINTE;"UNITS OF ENERGY LEFT.":IFRND(1)*(INT(E/4))>TTHENRETURN 1120 IFA(70)=0THENA(70)=INT(RND(1)*(INT(T/50)+1)):J=7:GOTO 1150 1130 J=INT(RND(6)*6):A(J+63)=INT(RND(1)*(INT(T/99)+1)+A(J+63)):I=INT(RND(8)*8+1):C=C+I 1140 PRINT"MCCOY: 'SICKBAY TO BRIDGE, WE SUFFERED ";I;"CASUALTIES.'" 1150 I=A(J+63):IFJ=1THENPRINT"SHORT RANGE SENSOR"; 1160 IFJ=2THENPRINT"COMPUTER DISPLAY"; 1170 IFJ=3THENPRINT"LONG RANGE SENSOR"; 1180 IFJ=4THENPRINT"PHASER"; 1190 IFJ=5THENPRINT"WARP ENGINE"; 1200 IFJ=6THENPRINT"PHOTON TORPEDO TUBES"; 1210 IFJ=7THENPRINT"SHIELD"; 1220 IFI=0THENRETURN 1230 PRINT" DAMAGED, ";I;"STARDATES ESTIMATED FOR REPAIR":RETURN 1240 PRINT"REPORT: STARDATE";DD-D;" TIME LEFT";D 1250 PRINT"CONDITION ";:IFOTHENPRINT"DOCKED":GOTO 1290 1260 IFNTHENPRINT"RED":GOTO 1290 1270 IFE<999THENPRINT"YELLOW":GOTO 1290 1280 PRINT"GREEN" 1290 PRINT"POSITION QUADRANT";U;V;" SECTOR";X;Y:PRINT"ENERGY ";E; 1300 PRINT" TORPEDOES ";F:PRINT"KLINGONS LEFT";K;" STARBASES";B 1310 FORJ=1TO7:IFA(J+63)THENGOSUB 1150 1320 NEXTJ:GOTO 500 1330 J=5:GOSUB 1150 :IFI=0THENPRINT 1340 INPUT"SECTOR DISTANCE";W:IFW<1GOTO 500 1350 IF(I)*(W>2)THENPRINT"CHEKOV: 'WE CAN TRY 2 AT MOST, SIR'":GOTO 1340 1360 IFW>91THENW=91:PRINT"SPOCK: 'ARE YOU SURE, CAPTAIN?'" 1370 IFE0)):NEXTM 1410 P=45*X+22:G=45*Y+22:W=45*W:FORM=1TO8:W=W-R:IFW<-22GOTO 1450 1420 P=P+S:G=G+T:I=INT(P/45):J=INT(G/45):IF(I<1)+(I>8)+(J<1)+(J>8)GOTO 1460 1430 IFA(8*I+J+62)=0THENX=I:Y=J:NEXTM 1440 PRINT"**EMERGENCY STOP**":PRINT"SPOCK: 'TO ERR IS HUMAN.'" 1450 A(8*X+Y+62)=4:GOSUB 640 :GOTO 380 1460 P=U*72+INT(P/5)+INT(W/5)*INT(S/R)-9:U=INT(P/72) 1470 G=V*72+INT(G/5)+INT(W/5)*INT(T/R)-9:V=INT(G/72) 1480 IFRND(9)*9<2THENPRINT"***SPACE STORM***":T=100:GOSUB 1120 1490 IF(U>0)*(U<9)*(V>0)*(V<9)THENX=INT((P+9-72*U)/9):GOTO 1740 1500 PRINT"**YOU WANDERED OUTSIDE THE GALAXY**" 1510 PRINT"ON BOARD COMPUTER TAKES OVER, AND SAVES YOUR LIFE":GOTO 310 1520 J=6:GOSUB 1150 :IFIGOTO 500 1530 IFF=OTHENPRINT" EMPTY":GOTO 500 1540 PRINT" LOADED":GOSUB 1670 :IFR=0GOTO 500 1550 PRINT"TORPEDO TRACK ";:F=F-1:P=45*X+22:G=45*Y+22:FORM=1TO8 1560 P=P+S:G=G+T:I=INT(P/45):J=INT(G/45):IF(I<1)+(I>8)+(J<1)+(J>8)GOTO 1590 1570 L=8*I+J+62:W=8*U+V-9:R=INT(A(W)/ABS(A(W))):PRINTI;J;" ";: 1580 ON(A(L)+1)GOTO 1590 , 1600 , 1620 , 1640 1590 NEXTM:PRINT"...MISSED":GOTO 380 1600 S=INT(RND(99)*99+280):FORM=135TO140:IF(A(M+6)=I)*(A(M+12)=J)THENGOSUB 1010 1610 NEXTM:GOTO 380 1620 B=B-1:A(L)=0:A(W)=A(W)-10*R:PRINT"STARBASE DESTROYED" 1630 PRINT"SPOCK: 'I OFTEN FIND HUMAN BEHAVIOR FASCINATING.'":GOTO 380 1640 PRINT"HIT A STAR":IFRND(9)*9<3THENPRINT"TORPEDO ABSORBED":GOTO 380 1650 A(L)=0:A(W)=A(W)-R:IFRND(9)*9<6THENPRINT"STAR DESTROYED":GOTO 380 1660 T=300:PRINT"IT NOVAS ***RADIATION ALARM***":GOSUB 1120 :GOTO 380 1670 INPUT"COURSE (0-360)";I:IF(I>360)+(I<0)THENR=0:RETURN 1680 S=INT((I+45)/90):I=I-S*90:R=INT((45+I*I)/110)+45 1690 S=-(S<4)*S+1:ONSGOTO 1700 , 1710 , 1720 , 1730 1700 S=-45:T=I:RETURN 1710 S=I:T=45:RETURN 1720 S=45:T=-I:RETURN 1730 S=-I:T=-45:RETURN 1740 Y=INT((G+9-72*V)/9):GOTO 320 1750 CLS 1950 RETURN 1960 A=0:IFZ$="S"ORZ$="s" THEN A=1 1970 IFZ$="G"ORZ$="g" THEN A=2 1980 IFZ$="L"ORZ$="l" THEN A=3 1990 IFZ$="P"ORZ$="p" THEN A=4 2000 IFZ$="R"ORZ$="r" THEN A=5 2010 IFZ$="W"ORZ$="w" THEN A=6 2020 IFZ$="T"ORZ$="t" THEN A=7 2030 RETURN 2100 PRINT@35,"Q";U;RIGHT$(STR$(V),1); 2110 PRINT@75,"S";X;RIGHT$(STR$(Y),1); 2120 RETURN