Nail the aliens in outer space. Warp, photons, starbases, smart K-ons.
Content
Source Code
5 REM (C)1981 BUG-BYTE
10 REM **STARTRIP**
11 LET T=0
12 GOSUB 9300
14 FAST
16 GOSUB 9200
18 LET PE=0
19 LET TE=(RA+1)*8000
20 LET K=0
30 LET T=INT (RND*200)+201
40 LET E=3000
50 LET O=15
60 LET S=0
90 LET L=T
100 DIM A(8,8)
125 REM **SET UP SECTORS**
130 FOR I=1 TO 8
140 FOR J=1 TO 8
150 LET Y=0
160 LET X=INT (RND*RA)+1
170 IF RND>.88 THEN LET Y=1
180 LET Z=INT (RND*5)+1
190 LET A(I,J)=100*X+10*Y+Z
200 LET K=K+X
210 NEXT J
212 NEXT I
214 LET KL=K
220 LET P=INT (RND*8)+1
225 LET Q=INT (RND*8)+1
228 SLOW
230 REM **SET UP CURRENT SECTOR
232 LET V=0
240 LET P=P-8*(P>8)+8*(P<1)
250 LET Q=Q-8*(Q>8)+8*(Q<1)
255 LET A=INT (RND*8)
258 LET B=INT (RND*8)
260 LET Z=A(P,Q)
270 LET X=INT (Z/100)
280 LET Z=Z-X*100
290 LET Y=INT (Z/10)
300 LET Z=Z-Y*10
302 DIM G(RA)
304 DIM H(RA)
306 DIM K(RA)
308 PRINT AT 0,0;
310 FOR I=1 TO 8
312 PRINT "% % % % % % % % "
314 NEXT I
316 PRINT AT A,B;"%$"
320 FOR I=1 TO X
321 LET K(I)=-200
322 LET G(I)=INT (RND*8)
324 LET H(I)=INT (RND*8)
326 PRINT AT G(I),H(I);
327 GOSUB 9000
328 IF CH<>128 THEN GOTO 322
330 PRINT "%K"
332 NEXT I
334 IF Y=0 THEN GOTO 344
336 PRINT AT INT (RND*8),INT (RND*8);
338 GOSUB 9000
340 IF CH<>128 THEN GOTO 336
342 PRINT "\''"
344 FOR I=1 TO Z
346 PRINT AT INT (RND*8),INT (RND*8);
348 GOSUB 9000
350 IF CH<>128 THEN GOTO 346
352 PRINT "%*"
354 NEXT I
400 LET C$="GREEN"
402 IF E<=0 THEN GOTO 9800
410 IF X<>0 THEN LET C$="RED"
420 PRINT AT A,B-1+(B=0);
430 GOSUB 9000
440 IF CH=3 THEN LET C$="DOCKED"
442 PRINT AT A,B+1-(B=7);
444 GOSUB 9000
446 IF CH=3 THEN LET C$="DOCKED"
448 IF V=1 OR C$<>"DOCKED" THEN GOTO 550
450 LET TE=TE+E-3000
452 LET E=3000
453 IF TE>=0 THEN GOTO 458
454 PRINT "STARFLEET""S ENERGY BANKS EXHAUSTED."
456 GOTO 9900
458 LET O=15
460 LET V=1
550 PRINT AT 1,10;"STARDATE ";T
560 PRINT AT 2,10;"CONDITION ";C$;" "
570 PRINT AT 3,10;"ENERGY ";E;" "
580 PRINT AT 4,10;"TORPEDOES ";O;" "
590 PRINT AT 5,10;"SHIELDS ";S;" "
600 PRINT AT 6,10;"KLINGONS ";K;" "
610 GOSUB 9100
630 IF L=T OR C$="DOCKED" OR C$="GREEN" THEN GOTO 640
635 IF RND>.3 THEN GOTO 4152
640 IF K=0 THEN PRINT "WELL DONE,CAPTAIN-THE FEDERATION HAS BEEN SAVED"
645 IF K=0 THEN GOTO 9900
648 LET L=T-1
650 PRINT "WHAT ARE YOUR ORDERS, CAPTAIN? (1-7)"
655 INPUT C
658 IF C<0 OR C>7 OR C<>INT C THEN GOTO 655
659 IF RND>.75 THEN PRINT "SPOCK: ";A$(RND*3+10.5)
660 GOTO C*1000
995 REM **HELM CONTROL**
\n1000 GOSUB 8500
\n1010 PRINT "SULU: WARP FACTOR,CAPTAIN?(1-63)"
\n1020 INPUT W
\n1022 IF W>E THEN PRINT "SCOTTIE:YE OVERLOADIN"" THE ENERGY BANKS,CAP""N."
\n1030 IF W>E OR W<1 OR W>63 OR W<>INT W THEN GOTO 1010
\n1040 PRINT AT A,B;"% "
\n1050 LET E=E-W
\n1060 LET T=T+W
\n1070 FOR I=1 TO W
\n1080 LET U=1
\n1090 LET A=A+M
\n1100 LET B=B+N
\n1110 IF A<0 OR A>7 OR B<0 OR B>7 THEN GOTO 1120
\n1112 LET U=0
\n1113 PRINT AT A,B;
\n1114 GOSUB 9000
\n1115 IF CH=128 THEN GOTO 1120
\n1116 LET A=A-M
\n1117 LET B=B-N
\n1120 NEXT I
\n1130 IF U=0 THEN GOTO 1140
\n1132 LET Q=Q+INT (A/8)
\n1134 LET P=P+INT (B/8)
\n1136 GOTO 230
\n1140 PRINT AT A,B;"%$"
\n1150 GOTO 400
\n1995 REM **LONG RANGE SCAN**
\n2000 PRINT "SHORT RANGE SCAN"
\n2002 PRINT "%K\''%* %K\''%* %K\''%*"
\n2005 FOR J=Q-1 TO Q+1
\n2010 FOR I=P-1 TO P+1
\n2012 LET G=I-8*(I>8)+8*(I<1)
\n2014 LET H=J-8*(J>8)+8*(J<1)
\n2020 LET U=A(G,H)
\n2030 IF INT (U/100)=0 THEN PRINT "0";
\n2040 IF INT (U/10)=0 THEN PRINT "0";
\n2050 PRINT U;" ";
\n2090 NEXT I
\n2100 PRINT
\n2110 NEXT J
\n2120 FOR D=1 TO 35
\n2130 NEXT D
\n2140 GOTO 610
\n2995 REM **PHASER CONTROL**
\n3000 PRINT "CHEKOV: PHASER ENERGY?"
\n3020 INPUT F
\n3030 IF E<F OR F<>INT F THEN GOTO 3000
\n3032 LET E=E-F
\n3035 IF X=0 THEN GOTO 3150
\n3040 LET F=F/X
\n3050 FOR I=1 TO RA
\n3060 IF K(I)=0 THEN GOTO 3140
\n3070 GOSUB 8000
\n3080 LET G=K(I)
\n3090 LET G=G+2*INT (F/D)
\n3100 IF G>=0 THEN GOSUB 8230
\n3110 IF G>=0 THEN GOTO 3140
\n3120 LET K(I)=G
\n3130 IF C$="DOCKED" THEN GOTO 3140
\n3131 LET G=-INT (G/D)
\n3132 LET S=S-G
\n3133 PRINT G;" HIT ON SHIELDS."
\n3134 IF G<100 THEN GOTO 3140
\n3135 PRINT "SCOTTIE: ";A$(RND*3+3.5);"CAP""N."
\n3136 LET E=E-INT (RND*G)*2
\n3140 NEXT I
\n3145 IF S<0 THEN GOTO 8100
\n3150 LET L=T
\n3160 LET A(P,Q)=A(P,Q)-(INT (A(P,Q)/100)-X)*100
\n3170 GOTO 400
\n3995 REM **TORPEDO CONTROL**
\n4000 IF O<1 THEN PRINT "SULU: NO TORPEDOES LEFT, SIR"
\n4002 IF O<1 THEN GOTO 650
\n4010 GOSUB 8500
\n4020 LET O=O-1
\n4030 LET G=A
\n4040 LET H=B
\n4050 FOR I=1 TO 7
\n4060 LET G=G+M
\n4070 LET H=H+N
\n4082 PRINT AT G,H;
\n4084 GOSUB 9000
\n4090 IF CH<>128 THEN GOTO 4110
\n4100 NEXT I
\n4110 IF CH<>3 THEN GOTO 4116
\n4111 PRINT AT G,H;"% "
\n4112 GOSUB 9100
\n4113 PRINT "SPOCK: WE HAVE DESTROYED A STAR BASE, CAPTAIN"
\n4114 LET PE=-200
\n4115 GOTO 9900
\n4116 IF CH<>151 THEN GOTO 4130
\n4118 PRINT AT G,H;"% "
\n4120 GOSUB 9100
\n4121 LET R=INT (RND*10)
\n4122 PRINT "STAR HAS GONE ";
\n4123 IF R<9 THEN GOTO 4127
\n4124 PRINT "SUPERNOVA"
\n4125 LET PE=-100
\n4126 GOTO 9900
\n4127 PRINT "NOVA"
\n4128 LET S=S-100
\n4129 GOTO 4152
\n4130 IF CH<>176 THEN GOTO 4150
\n4140 GOSUB 8200
\n4142 GOTO 4152
\n4150 GOSUB 9100
\n4152 LET F=0
\n4155 IF RND>.75 THEN PRINT "KLINGON MESSAGE:";A$(RND*4+6.5)
\n4160 GOTO 3032
\n4995 REM **SHIELD CONTROL**
\n5000 LET E=E+S
\n5020 PRINT "CHEKOV: SHIELD ENERGY, SIR?"
\n5030 INPUT S
\n5040 LET E=E-S
\n5050 IF E<1 THEN PRINT "SCOTTIE:THE ENERGY BANKS CANNO"" TAKE IT, CAP""N."
\n5052 IF E<1 THEN GOTO 5000
\n5060 GOTO 400
\n5995 REM **INSTRUCTIONS**
\n6000 CLS
\n6010 PRINT " YOU ARE CAPTAIN KIRK OF THE STARSHIP ENTERPRISE(%$). YOUR MISSION IS TO DESTROY ALL THE KLINGON SHIPS(%K)IN THE GALAXY."
\n6012 PRINT
\n6015 PRINT " THERE ARE 64 SECTORS OF THE GALAXY,WHICH ARE EACH 8 PARSECS SQUARE."
\n6017 PRINT
\n6020 PRINT " YOU ARE GIVEN 15 PHOTON TORPEDOES,AND 3000 ENERGY UNITS."
\n6021 PRINT
\n6022 PRINT " YOU MAY DOCK BESIDE A STAR BASE(\''),WHICH REPLENISHES YOUR ENERGY AND TORPEDOES AND PROTECTS YOU FROM ATTACK."
\n6023 PRINT
\n6024 PRINT "PRESS ANY KEY TO CONTINUE"
\n6025 IF INKEY$="" THEN GOTO 6025
\n6030 CLS
\n6040 PRINT " THE COMMANDS ARE:"
\n6050 PRINT "1)HELM-TO MOVE TO ANY POINT IN THE GALAXY,GIVING THE COURSE ANDWARP(EACH UNIT MOVES 1 PARSEC)."
\n6055 PRINT
\n6060 PRINT "2)LONG RANGE SCAN-GIVES THE NO. OF %K\''%* IN THE ADJACENT SECTORS."
\n6065 PRINT
\n6070 PRINT "3)PHASERS-THIS WEAPON ACTS IN ALL DIRECTIONS BUT ITS EFFECT DECREASES WITH DISTANCE."
\n6075 PRINT
\n6080 PRINT "4)PHOTON TORPEDOES-DIRECTIONAL WEAPON BUT A SINGLE BOLT WILL DESTROY A KLINGON AT ANY DIST."
\n6085 PRINT
\n6090 PRINT "5)SHIELDS-INPUT AMOUNT OF ENERGY DIVERTED TO THE SHIELDS."
\n6095 PRINT
\n6100 PRINT "6)INSTRUCTIONS"
\n6110 PRINT "7)RESIGNATION"
\n6120 PRINT "PRESS ANY KEY TO CONTINUE"
\n6125 IF INKEY$="" THEN GOTO 6125
\n6130 CLS
\n6132 IF T=0 THEN RETURN
\n6134 LET L=T
\n6140 GOTO 230
\n6995 REM **RESIGNATION**
\n7000 PRINT "STARFLEET: RESIGNATION ACCEPTED"
\n7010 GOTO 9900
\n7990 REM **SUBROUTINES**
\n7995 REM **CAL. KLINGON DIST.**
\n8000 LET Z=A-G(I)
\n8010 LET Y=B-H(I)
\n8020 LET D=INT SQR (Z*Z+Y*Y)
\n8030 RETURN
\n8095 REM ***********************
\n8100 PRINT "THE ENTERPRISE IS DEAD IN SPACE."
\n8110 IF S>-100 THEN GOTO 8120
\n8112 LET PE=-300
\n8114 PRINT " THERE ARE NO SURVIVERS."
\n8116 GOTO 9900
\n8120 IF S>-50 THEN GOTO 8130
\n8122 LET PE=-200
\n8124 PRINT "HALF THE CREW WERE KILLED."
\n8126 GOTO 9900
\n8130 LET PE=S*2
\n8132 PRINT -S;" OF THE CREW WERE KILLED."
\n8134 GOTO 9900
\n8195 REM ***********************
\n8200 FOR I=1 TO RA
\n8210 IF G(I)=G AND H(I)=H THEN GOTO 8230
\n8220 NEXT I
\n8230 LET K(I)=0
\n8235 PRINT AT G(I),H(I);"% "
\n8240 GOSUB 9100
\n8250 PRINT A$(RND*3+.5)
\n8260 LET X=X-1
\n8265 LET K=K-1
\n8270 RETURN
\n8495 REM **READ COURSE AND CAL**
\n8496 REM ** MOVEMENT VECTOR **
\n8500 PRINT "CHEKOV:COURSE, CAPTAIN?(O-7)"
\n8510 INPUT C
\n8520 IF C<0 OR C>7 OR C<>INT C THEN GOTO 8500
\n8530 LET M=0
\n8540 LET N=0
\n8550 IF C<2 OR C>6 THEN LET M=-1
\n8560 IF C>2 AND C<6 THEN LET M=1
\n8570 IF C<4 AND C>0 THEN LET N=1
\n8580 IF C>4 THEN LET N=-1
\n8590 RETURN
\n8595 REM ***********************
\n9000 LET CH=PEEK (PEEK 16398+256*PEEK 16399)
\n9010 RETURN
\n9100 PRINT AT 8,0;
\n9110 FOR J=1 TO 14
\n9120 PRINT " "
\n9130 NEXT J
\n9140 PRINT AT 8,0;
\n9150 RETURN
\n9200 DIM A$(13,33)
\n9202 LET A$(1)="SULU: BULLS EYE, CAPTAIN"
\n9204 LET A$(2)="SPOCK: KLINGON DESTROYED"
\n9206 LET A$(3)="CHEKOV: WE GOT HIM, SIR"
\n9208 LET A$(11)="HUMAN LOGIC FASCINATES ME"
\n9210 LET A$(12)="I CAN NEVER UNDERSTAND EMOTIONS"
\n9220 LET A$(13)="HUMAN BEHAVIOUR IS VERYIRRATIONAL"
\n9222 LET A$(4)="DILITHIUM CRYSTALS DAMAGED,"
\n9224 LET A$(5)="ANTIMATTER STABLISER BROKEN ,"
\n9226 LET A$(6)="WEE DAMAGE TO ENERGY BANKS ,"
\n9228 LET A$(7)="YOU DON""T STAND A CHANCE, KIRK"
\n9230 LET A$(8)="GIVE YOURSELF UP, KIRK"
\n9232 LET A$(9)="SURRENDER NOW, KIRK, OR DIE"
\n9234 LET A$(10)="YOUR PUNY RACE CAN""T KILL A FLY"
\n9250 RETURN
\n9300 PRINT TAB 9;"************"
\n9310 PRINT TAB 9;"**STARTRIP**"
\n9320 PRINT TAB 9;"************"
\n9330 PRINT
\n9340 PRINT "DO YOU WANT INSTRUCTIONS?"
\n9350 LET B$=INKEY$
\n9360 IF B$="" THEN GOTO 9350
\n9370 IF B$="Y" THEN GOSUB 6000
\n9372 PRINT
\n9380 PRINT "WHAT STAR-RATING ARE YOU, CAPTAIN? ( 6 IS THE HIGHEST )"
\n9390 INPUT RA
\n9400 IF RA>6 OR RA<1 OR RA<>INT RA THEN GOTO 9380
\n9410 CLS
\n9420 RETURN
\n9890 LET E=0
\n9892 PRINT "YOU HAVE NO ENERGY LEFT"
\n9894 LET PE=-100
\n9900 FOR D=1 TO 25
\n9902 NEXT D
\n9903 CLS
\n9904 PRINT TAB 10;"GAME OVER"
\n9906 LET S=PE+INT (TE/100/RA)+(KL-K)*10
\n9908 PRINT
\n9910 PRINT "YOUR SCORE IS ";S
\n9920 PRINT
\n9922 PRINT "YOU HAVE KILLED ";KL-K;" KLINGONS"
\n9924 PRINT
\n9928 LET RA=(RA+7)/16
\n9930 IF S>RA*200 THEN GOTO 9940
\n9932 PRINT "NOT VERY GOOD-YOU""LL HAVE TO DO BETTER THAN THAT."
\n9934 STOP
\n9940 IF S>RA*400 THEN GOTO 9950
\n9942 PRINT "NOT BAD, BUT YOU CAN STILL DO MUCH BETTER."
\n9944 STOP
\n9950 IF S>RA*600 THEN GOTO 9960
\n9952 PRINT "A WORTHY ATTEMPT, CAPTAIN."
\n9954 STOP
\n9960 IF S>RA*800 THEN GOTO 9970
\n9962 PRINT "VERY GOOD, YOU DESERVE PROMOTION"
\n9964 STOP
\n9970 IF S>RA*1000 THEN GOTO 9980
\n9972 PRINT "A CREDITABLE EXAMPLE FOR THE REST OF THE FLEET, WELL DONE."
\n9974 STOP
\n9980 PRINT "EXCELLENT, YOU DESERVE TO BE STARFLEET COMMANDER."
\n9997 FOR A=1 TO 20
\n9998 PRINT A$(A)
\n9999 NEXT A