Click here to Skip to main content
15,881,757 members
Articles / Programming Languages / C#

Star Trek 1971 Text Game

Rate me:
Please Sign up or sign in to vote.
4.94/5 (123 votes)
29 Jul 2008LGPL315 min read 466.2K   4.6K   147  
A reworking of the 1971 Star Trek text game using C#
REM  Extracted from HP tape image 16-Nov-2003 by Pete Turnbull

1  REM ****  HP BASIC PROGRAM LIBRARY  ******************************
2  REM
3  REM       STTR1: STAR TREK
4  REM
5  REM       36243  REV B  --  10/73
6  REM
7  REM ****  CONTRIBUTED PROGRAM  ***********************************
100  REM *****************************************************************
110  REM ***                                                           ***
120  REM ***     STAR TREK: BY MIKE MAYFIELD, CENTERLINE ENGINEERING   ***
130  REM ***                                                           ***
140  REM ***        TOTAL INTERACTION GAME - ORIG. 20 OCT 1972
150  REM ***                                                           ***
160  REM *****************************************************************
170  GOSUB 5460
180  PRINT "                          STAR TREK "
190  PRINT "DO YOU WANT INSTRUCTIONS (THEY'RE LONG!)";
200  INPUT A$
210  IF A$ <> "YES" THEN 230
220  GOSUB 5820
230  REM *****  PROGRAM STARTS HERE *****
240  Z$="                                                                      "
250  GOSUB 5460
260  DIM G[8,8],C[9,2],K[3,3],N[3],Z[8,8]
270  DIM C$[6],D$[72],E$[24],A$[3],Q$[72],R$[72],S$[48]
280  DIM Z$[72]
290  T0=T=INT(RND(1)*20+20)*100
300  T9=30
310  D0=0
320  E0=E=3000
330  P0=P=10
340  S9=200
350  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=TIM(0)+60*TIM(1)
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$[49]="PHOTON TUBESDAMAGE CNTRL"
480  E$="SHIELD CNTRLCOMPUTER"
490  B9=K9=0
500  FOR I=1 TO 8
510  FOR J=1 TO 8
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
570  GOTO 660
580  K3=3
590  K9=K9+3
600  GOTO 660
610  K3=2
620  K9=K9+2
630  GOTO 660
640  K3=1
650  K9=K9+1
660  R1=RND(1)
670  IF R1>.96 THEN 700
680  B3=0
690  GOTO 720
700  B3=1
710  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  IF B9 <= 0 OR K9 <= 0 THEN 490
780  PRINT "YOU MUST DESTROY"K9;" KLINGONS IN"T9;" STARDATES WITH"B9;" STARBASES"
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=1 TO 3
930  K[I,3]=0
940  NEXT I
950  Q$=Z$
960  R$=Z$
970  S$=Z$[1,48]
980  A$="<*>"
990  Z1=S1
1000  Z2=S2
1010  GOSUB 5510
1020  FOR I=1 TO K3
1030  GOSUB 5380
1040  A$="+++"
1050  Z1=R1
1060  Z2=R2
1070  GOSUB 5510
1080  K[I,1]=R1
1090  K[I,2]=R2
1100  K[I,3]=S9
1110  NEXT I
1120  FOR I=1 TO B3
1130  GOSUB 5380
1140  A$=">!<"
1150  Z1=R1
1160  Z2=R2
1170  GOSUB 5510
1180  NEXT I
1190  FOR I=1 TO S3
1200  GOSUB 5380
1210  A$=" * "
1220  Z1=R1
1230  Z2=R2
1240  GOSUB 5510
1250  NEXT I
1260  GOSUB 4120
1270  PRINT "COMMAND:";
1280  INPUT A
1290  GOTO A+1 OF 1410,1260,2330,2530,2800,3460,3560,4630
1300  PRINT
1310  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
1400  GOTO 1270
1410  PRINT "COURSE (1-9):";
1420  INPUT C1
1430  IF C1=0 THEN 1270
1440  IF C1<1 OR C1 >= 9 THEN 1410
1450  PRINT "WARP FACTOR (0-8):";
1460  INPUT 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=1 TO 8
1620  IF D[I] >= 0 THEN 1640
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
1700  PRINT "DAMAGE CONTROL REPORT:";
1710  GOSUB 5610
1720  PRINT " DAMAGED"
1730  PRINT
1740  GOTO 1810
1750  D[R1]=D[R1]+(RND(1)*5+1)
1760  PRINT
1770  PRINT "DAMAGE CONTROL REPORT:";
1780  GOSUB 5610
1790  PRINT " STATE OF REPAIR IMPROVED"
1800  PRINT
1810  N=INT(W1*8)
1820  A$="   "
1830  Z1=S1
1840  Z2=S2
1850  GOSUB 5510
1870  X=S1
1880  Y=S2
1885  C2=INT(C1)
1890  X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2)
1900  X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2)
1910  FOR I=1 TO N
1920  S1=S1+X1
1930  S2=S2+X2
1940  IF S1<.5 OR S1 >= 8.5 OR S2<.5 OR S2 >= 8.5 THEN 2170
1950  A$="   "
1960  Z1=S1
1970  Z2=S2
1980  GOSUB 5680
1990  IF Z3 <> 0 THEN 2070
2030  PRINT  USING 5370;S1,S2
2040  S1=S1-X1
2050  S2=S2-X2
2060  GOTO 2080
2070  NEXT I
2080  A$="<*>"
2083  S1=INT(S1+.5)
2086  S2=INT(S2+.5)
2090  Z1=S1
2100  Z2=S2
2110  GOSUB 5510
2120  E=E-N+5
2130  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
2180  Y=Q2*8+Y+X2*N
2190  Q1=INT(X/8)
2200  Q2=INT(Y/8)
2210  S1=INT(X-Q1*8+.5)
2220  S2=INT(Y-Q2*8+.5)
2230  IF S1 <> 0 THEN 2260
2240  Q1=Q1-1
2250  S1=8
2260  IF S2 <> 0 THEN 2290
2270  Q2=Q2-1
2280  S2=8
2290  T=T+1
2300  E=E-N+5
2310  IF T>T0+T9 THEN 3970
2320  GOTO 810
2330  IF D[3] >= 0 THEN 2370
2340  PRINT "LONG RANGE SENSORS ARE INOPERABLE"
2350  IMAGE  "LONG RANGE SENSOR SCAN FOR QUADRANT",D,",",D
2360  GOTO 1270
2370  PRINT  USING 2350;Q1,Q2
2380  PRINT  USING 2520
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  PRINT  USING 2510;N[1],N[2],N[3]
2480  PRINT  USING 2520
2490  NEXT I
2500  GOTO 1270
2510  IMAGE  ": ",3(3D," :")
2520  IMAGE  "-----------------"
2530  IF K3 <= 0 THEN 3670
2540  IF D[4] >= 0 THEN 2570
2550  PRINT "PHASER CONTROL IS DISABLED"
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  PRINT "NUMBER OF UNITS TO FIRE:";
2610  INPUT 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=1 TO 3
2690  IF K[I,3] <= 0 THEN 2770
2700  H=(X/K3/FND(0))*(2*RND(1))
2710  K[I,3]=K[I,3]-H
2720  PRINT  USING 2730;H,K[I,1],K[I,2],K[I,3]
2730  IMAGE  4D," UNIT HIT ON KLINGON AT SECTOR ",D,",",D,"   (",3D," 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
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  PRINT "TORPEDO COURSE (1-9):";
2870  INPUT C1
2880  IF C1=0 THEN 1270
2890  IF C1<1 OR C1 >= 9 THEN 2860
2895  C2=INT(C1)
2900  X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2)
2910  X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2)
2920  X=S1
2930  Y=S2
2940  P=P-1
2950  PRINT "TORPEDO TRACK:"
2960  X=X+X1
2970  Y=Y+X2
2980  IF X<.5 OR X >= 8.5 OR Y<.5 OR Y >= 8.5 THEN 3420
2990  PRINT  USING 3000;X,Y
3000  IMAGE  15X,D,",",D
3010  A$="   "
3020  Z1=X
3030  Z2=Y
3040  GOSUB 5680
3050  IF Z3=0 THEN 3070
3060  GOTO 2960
3070  A$="+++"
3080  Z1=X
3090  Z2=Y
3100  GOSUB 5680
3110  IF Z3=0 THEN 3220
3120  PRINT "*** KLINGON DESTROYED ***"
3130  K3=K3-1
3140  K9=K9-1
3150  IF K9 <= 0 THEN 4040
3160  FOR I=1 TO 3
3170  IF INT(X+.5) <> K[I,1] THEN 3190
3180  IF INT(Y+.5)=K[I,2] THEN 3200
3190  NEXT I
3200  K[I,3]=0
3210  GOTO 3360
3220  A$=" * "
3230  Z1=X
3240  Z2=Y
3250  GOSUB 5680
3260  IF Z3=0 THEN 3290
3270  PRINT "YOU CAN'T DESTROY STARS SILLY"
3280  GOTO 3420
3290  A$=">!<"
3300  Z1=X
3310  Z2=Y
3320  GOSUB 5680
3330  IF Z3=0 THEN 2960
3340  PRINT "*** STAR BASE DESTROYED ***  .......CONGRATULATIONS"
3350  B3=B3-1
3360  A$="   "
3370  Z1=INT(X+.5)
3380  Z2=INT(Y+.5)
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
3460  IF D[7] >= 0 THEN 3490
3470  PRINT "SHIELD CONTROL IS NON-OPERATIONAL"
3480  GOTO 1270
3490  PRINT "ENERGY AVAILABLE ="E+S"   NUMBER OF UNITS TO SHIELDS:";
3500  INPUT X
3510  IF X <= 0 THEN 1270
3520  IF E+S-X<0 THEN 3490
3530  E=E+S-X
3540  S=X
3550  GOTO 1270
3560  IF D[6] >= 0 THEN 3590
3570  PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE"
3580  GOTO 1270
3590  PRINT
3600  PRINT "DEVICE        STATE OF REPAIR"
3610  FOR R1=1 TO 8
3620  GOSUB 5610
3630  PRINT "",D[R1]
3640  NEXT R1
3650  PRINT
3660  GOTO 1270
3670  PRINT "SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT"
3680  GOTO 1270
3690  PRINT  USING 3700;K[I,1],K[I,2]
3700  IMAGE  "KLINGON AT SECTOR ",D,",",D," DESTROYED ****"
3710  K3=K3-1
3720  K9=K9-1
3730  A$="   "
3740  Z1=K[I,1]
3750  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=1 TO 3
3840  IF K[I,3] <= 0 THEN 3900
3850  H=(K[I,3]/FND(0))*(2*RND(1))
3860  S=S-H
3870  PRINT  USING 3880;H,K[I,1],K[I,2],S
3880  IMAGE  4D," UNIT HIT ON ENTERPRISE AT SECTOR ",D,",",D,"   (",4D," 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 "ATTACK YOU WILL BE DEMOTED TO THE RANK OF PRIVATE"
3940  IF K3 <= 0 THEN 4020
3950  GOSUB 3790
3960  GOTO 3940
3970  PRINT
3980  PRINT "IT IS STARDATE"T
3990  GOTO 4020
4000  PRINT
4010  PRINT "THE ENTERPRISE HAS BEEN DESTROYED.  THE FEDERATION WILL BE CONQUERED"
4020  PRINT "THERE ARE STILL"K9" KLINGON BATTLE CRUISERS"
4030  GOTO 230
4040  PRINT
4050  PRINT "THE LAST KLINGON BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED"
4060  PRINT "THE FEDERATION HAS BEEN SAVED !!!"
4070  PRINT
4080  PRINT "YOUR EFFICIENCY RATING ="((K7/(T-T0))*1000)
4090  T1=TIM(0)+TIM(1)*60
4100  PRINT "YOUR ACTUAL TIME OF MISSION ="INT((((T1-T7)*.4)-T7)*100)" MINUTES"
4110  GOTO 230
4120  FOR I=S1-1 TO S1+1
4130  FOR J=S2-1 TO S2+1
4140  IF I<1 OR I>8 OR J<1 OR J>8 THEN 4200
4150  A$=">!<"
4160  Z1=I
4170  Z2=J
4180  GOSUB 5680
4190  IF Z3=1 THEN 4240
4200  NEXT J
4210  NEXT I
4220  D0=0
4230  GOTO 4310
4240  D0=1
4250  C$="DOCKED"
4260  E=3000
4270  P=10
4280  PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES"
4290  S=0
4300  GOTO 4380
4310  IF K3>0 THEN 4350
4320  IF E<E0*.1 THEN 4370
4330  C$="GREEN"
4340  GOTO 4380
4350  C$="RED"
4360  GOTO 4380
4370  C$="YELLOW"
4380  IF D[2] >= 0 THEN 4430
4390  PRINT
4400  PRINT "*** SHORT RANGE SENSORS ARE OUT ***"
4410  PRINT
4420  GOTO 4530
4430  PRINT  USING 4540
4440  PRINT  USING 4550;Q$[1,3],Q$[4,6],Q$[7,9],Q$[10,12],Q$[13,15],Q$[16,18],Q$[19,21],Q$[22,24]
4450  PRINT  USING 4560;Q$[25,27],Q$[28,30],Q$[31,33],Q$[34,36],Q$[37,39],Q$[40,42],Q$[43,45],Q$[46,48],T
4460  PRINT  USING 4570;Q$[49,51],Q$[52,54],Q$[55,57],Q$[58,60],Q$[61,63],Q$[64,66],Q$[67,69],Q$[70,72],C$
4470  PRINT  USING 4580;R$[1,3],R$[4,6],R$[7,9],R$[10,12],R$[13,15],R$[16,18],R$[19,21],R$[22,24],Q1,Q2
4480  PRINT  USING 4590;R$[25,27],R$[28,30],R$[31,33],R$[34,36],R$[37,39],R$[40,42],R$[43,45],R$[46,48],S1,S2
4490  PRINT  USING 4600;R$[49,51],R$[52,54],R$[55,57],R$[58,60],R$[61,63],R$[64,66],R$[67,69],R$[70,72],E
4500  PRINT  USING 4610;S$[1,3],S$[4,6],S$[7,9],S$[10,12],S$[13,15],S$[16,18],S$[19,21],S$[22,24],P
4510  PRINT  USING 4620;S$[25,27],S$[28,30],S$[31,33],S$[34,36],S$[37,39],S$[40,42],S$[43,45],S$[46,48],S
4520  PRINT  USING 4540
4530  RETURN 
4540  IMAGE  "---------------------------------"
4550  IMAGE  8(X,3A)
4560  IMAGE  8(X,3A),8X,"STARDATE",8X,5D
4570  IMAGE  8(X,3A),8X,"CONDITION",8X,6A
4580  IMAGE  8(X,3A),8X,"QUADRANT",9X,D,",",D
4590  IMAGE  8(X,3A),8X,"SECTOR",11X,D,",",D
4600  IMAGE  8(X,3A),8X,"ENERGY",9X,6D
4610  IMAGE  8(X,3A),8X,"PHOTON TORPEDOES",3D
4620  IMAGE  8(X,3A),8X,"SHIELDS",8X,6D
4630  IF D[8] >= 0 THEN 4660
4640  PRINT "COMPUTER DISABLED"
4650  GOTO 1270
4660  PRINT "COMPUTER ACTIVE AND AWAITING COMMAND";
4670  INPUT A
4680  GOTO A+1 OF 4740,4830,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
4740  PRINT  USING 4750;Q1,Q2
4750  IMAGE  "COMPUTER RECORD OF GALAXY FOR QUADRANT ",D,",",D
4760  PRINT  USING 5330
4770  PRINT  USING 5360
4780  FOR I=1 TO 8
4790  PRINT  USING 5350;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  USING 5360
4810  NEXT I
4820  GOTO 1270
4830  PRINT "\012   STATUS REPORT\012"
4840  PRINT "NUMBER OF KLINGONS LEFT ="K9
4850  PRINT "NUMBER OF STARDATES LEFT ="(T0+T9)-T
4860  PRINT "NUMBER OF STARBASES LEFT ="B9
4870  GOTO 3560
4880  PRINT 
4890  H8=0
4900  FOR I=1 TO 3
4910  IF K[I,3] <= 0 THEN 5260
4920  C1=S1
4930  A=S2
4940  W1=K[I,1]
4950  X=K[I,2]
4960  GOTO 5010
4970  PRINT  USING 4980;Q1,Q2,S1,S2
4980  IMAGE  "YOU ARE AT QUADRANT ( ",D,",",D," )  SECTOR ( ",D,",",D," )"
4990  PRINT "SHIP'S & TARGET'S COORDINATES ARE";
5000  INPUT C1,A,W1,X
5010  X=X-A
5020  A=C1-W1
5030  IF X<0 THEN 5130
5040  IF A<0 THEN 5190
5050  IF X>0 THEN 5070
5060  IF A=0 THEN 5150
5070  C1=1
5080  IF ABS(A) <= ABS(X) THEN 5110
5090  PRINT "DIRECTION ="C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A))
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
5160  GOTO 5080
5170  C1=3
5180  GOTO 5200
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  PRINT "DO YOU WANT TO USE THE CALCULATOR";
5290  INPUT A$
5300  IF A$="YES" THEN 4970
5310  IF A$ <> "NO" THEN 5280
5320  GOTO 1270
5330  IMAGE  "     1     2     3     4     5     6     7     8"
5340  IMAGE  "---------------------------------------------------"
5350  IMAGE  D,8(3X,3D)
5360  IMAGE  "   ----- ----- ----- ----- ----- ----- ----- -----"
5370  IMAGE  " WARP ENGINES SHUTDOWN AT SECTOR ",D,",",D," DUE TO BAD NAVIGATION"
5380  R1=INT(RND(1)*8+1)
5390  R2=INT(RND(1)*8+1)
5400  A$="   "
5410  Z1=R1
5420  Z2=R2
5430  GOSUB 5680
5440  IF Z3=0 THEN 5380
5450  RETURN
5460  FOR I=1 TO 11
5470  PRINT
5480  NEXT I
5490  PRINT
5500  RETURN
5510  REM ******  INSERTION IN STRING ARRAY FOR QUADRANT ******
5520  S8=Z1*24+Z2*3-26
5530  IF S8>72 THEN 5560
5540  Q$[S8,S8+2]=A$
5550  GOTO 5600
5560  IF S8>144 THEN 5590
5570  R$[S8-72,S8-70]=A$
5580  GOTO 5600
5590  S$[S8-144,S8-142]=A$
5600  RETURN
5610  REM ****  PRINTS DEVICE NAME FROM ARRAY *****
5620  S8=R1*12-11
5630  IF S8>72 THEN 5660
5640  PRINT D$[S8,S8+11];
5650  GOTO 5670
5660  PRINT E$[S8-72,S8-61];
5670  RETURN
5680  REM *******  STRING COMPARISON IN QUADRANT ARRAY **********
5683  Z1=INT(Z1+.5)
5686  Z2=INT(Z2+.5)
5690  S8=Z1*24+Z2*3-26
5700  Z3=0
5710  IF S8>72 THEN 5750
5720  IF Q$[S8,S8+2] <> A$ THEN 5810
5730  Z3=1
5740  GOTO 5810
5750  IF S8>144 THEN 5790
5760  IF R$[S8-72,S8-70] <> A$ THEN 5810
5770  Z3=1
5780  GOTO 5810
5790  IF S$[S8-144,S8-142] <> A$ THEN 5810
5800  Z3=1
5810  RETURN
5820  PRINT "     INSTRUCTIONS:"
5830  PRINT "<*> = ENTERPRISE"
5840  PRINT "+++ = KLINGON"
5850  PRINT ">!< = STARBASE"
5860  PRINT " *  = STAR"
5870  PRINT "COMMAND 0 = WARP ENGINE CONTROL"
5880  PRINT "  'COURSE' IS IN A CIRCULAR NUMERICAL          4  3  2"
5890  PRINT "  VECTOR ARRANGEMENT AS SHOWN.                  \ ^ /"
5900  PRINT "  INTERGER AND REAL VALUES MAY BE                \^/"
5910  PRINT "  USED.  THEREFORE COURSE 1.5 IS              5 ----- 1"
5920  PRINT "  HALF WAY BETWEEN 1 AND 2.                      /^\"
5930  PRINT "                                                / ^ \"
5940  PRINT "  A VECTOR OF 9 IS UNDEFINED, BUT              6  7  8"
5950  PRINT "  VALUES MAY APPROACH 9."
5960  PRINT "                                               COURSE"
5970  PRINT "  ONE 'WARP FACTOR' IS THE SIZE OF"
5980  PRINT "  ONE QUADRANT.  THEREFORE TO GET"
5990  PRINT "  FROM QUADRANT 6,5 TO 5,5 YOU WOULD"
6000  PRINT "  USE COURSE 3, WARP FACTOR 1"
6010  PRINT "COMMAND 1 = SHORT RANGE SENSOR SCAN"
6020  PRINT "  PRINTS THE QUADRANT YOU ARE CURRENTLY IN, INCLUDING"
6030  PRINT "  STARS, KLINGONS, STARBASES, AND THE ENTERPRISE; ALONG"
6040  PRINT "  WITH OTHER PERTINATE INFORMATION."
6050  PRINT "COMMAND 2 = LONG RANGE SENSOR SCAN"
6060  PRINT "  SHOWS CONDITIONS IN SPACE FOR ONE QUADRANT ON EACH SIDE"
6070  PRINT "  OF THE ENTERPRISE IN THE MIDDLE OF THE SCAN.  THE SCAN"
6080  PRINT "  IS CODED IN THE FORM XXX, WHERE THE UNITS DIGIT IS THE"
6090  PRINT "  NUMBER OF STARS, THE TENS DIGIT IS THE NUMBER OF STAR-"
6100  PRINT "  BASES, THE HUNDREDS DIGIT IS THE NUMBER OF KLINGONS."
6110  PRINT "COMMAND 3 = PHASER CONTROL"
6120  PRINT "  ALLOWS YOU TO DESTROY THE KLINGONS BY HITTING HIM WITH"
6130  PRINT "  SUITABLY LARGE NUMBERS OF ENERGY UNITS TO DEPLETE HIS "
6140  PRINT "  SHIELD POWER.  KEEP IN MIND THAT WHEN YOU SHOOT AT"
6150  PRINT "  HIM, HE GONNA DO IT TO YOU TOO."
6160  PRINT "COMMAND 4 = PHOTON TORPEDO CONTROL"
6170  PRINT "  COURSE IS THE SAME AS USED IN WARP ENGINE CONTROL"
6180  PRINT "  IF YOU HIT THE KLINGON, HE IS DESTROYED AND CANNOT FIRE"
6190  PRINT "  BACK AT YOU.  IF YOU MISS, HE WILL SHOOT HIS PHASERS AT"
6200  PRINT "  YOU."
6210  PRINT "   NOTE: THE LIBRARY COMPUTER (COMMAND 7) HAS AN OPTION"
6220  PRINT "   TO COMPUTE TORPEDO TRAJECTORY FOR YOU (OPTION 2)."
6230  PRINT "COMMAND 5 = SHIELD CONTROL"
6240  PRINT "  DEFINES NUMBER OF ENERGY UNITS TO BE ASSIGNED TO SHIELDS"
6250  PRINT "  ENERGY IS TAKEN FROM TOTAL SHIP'S ENERGY."
6260  PRINT "COMMAND 6 = DAMAGE CONTROL REPORT"
6270  PRINT "  GIVES STATE OF REPAIRS OF ALL DEVICES.  A STATE OF REPAIR"
6280  PRINT "  LESS THAN ZERO SHOWS THAT THAT DEVICE IS TEMPORARALY"
6290  PRINT "  DAMAGED."
6300  PRINT "COMMAND 7 = LIBRARY COMPUTER"
6310  PRINT "  THE LIBRARY COMPUTER CONTAINS THREE OPTIONS:"
6320  PRINT "    OPTION 0 = CUMULATIVE GALACTIC RECORD"
6330  PRINT "     SHOWS COMPUTER MEMORY OF THE RESULTS OF ALL PREVIOUS"
6340  PRINT "     LONG RANGE SENSOR SCANS"
6350  PRINT "    OPTION 1 = STATUS REPORT"
6360  PRINT "     SHOWS NUMBER OF KLINGONS, STARDATES AND STARBASES"
6370  PRINT "     LEFT."
6380  PRINT "    OPTION 2 = PHOTON TORPEDO DATA"
6390  PRINT "     GIVES TRAJECTORY AND DISTANCE BETWEEN THE ENTERPRISE"
6400  PRINT "     AND ALL KLINGONS IN YOUR QUADRANT"
6410  RETURN
6420  END

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)


Written By
Unknown
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions