home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG027.ARK / STARTREK.ASC < prev    next >
Text File  |  1984-04-29  |  7KB  |  155 lines

  1. 100 DIM D(5),K1(7),K2(7),K3(7),S(7,7),Q(7,7),R(7,7),D$(5)
  2. 110 Q$=".EKB*"
  3. 120 D$(0)="WARP ENGINES"
  4. 130 D$(1)="SHORT RANGE SENSORS"
  5. 140 D$(2)="LONG RANGE SENSORS"
  6. 150 D$(3)="PHASERS"
  7. 160 D$(4)="PHOTON TORPEDOES":D$(5)="GALACTIC RECORDS"
  8. 170 INPUT"PLEASE ENTER A RANDOM NUMBER";E$:I=ASC(E$)
  9. 180 I=I-11*INT(I/11):FOR J=0 TO I:K=RND(1):NEXT:PRINT"WORKING-"
  10. 190 DEF FND(N)=SQR((K1(I)-S1)^2+(K2(I)-S2)^2)
  11. 200 GOSUB 720:GOSUB 560:Q1=X:Q2=Y:X=8:Y=1:X1=.2075:Y1=6.28:X2=3.28
  12. 210 FOR I=0 TO 7:FOR J=0 TO 7:R(I,J)=-1:NEXT J,I
  13. 220 Y2=1.8:A=.96:C=100:W=10:K9=0:B9=0:S9=400:T9=3451:GOTO 240
  14. 230 K=K+(N<X2)+(N<Y2)+(N<.28)+(N<.08)+(N<.03)+(N<.01):K9=K9-K:GOTO260
  15. 240 T0=3421:T=T0:E0=4000:E=E0:P0=10:P=P0:FOR I=0 TO 7
  16. 250 FOR J=0TO7:K=0:N=RND(Y):IF N<X1 THEN N=N*64:K=(N<Y1)-Y:GOTO230
  17. 260 B=(RND(Y)>A):B9=B9-B:Q(I,J)=K*C+B*W-INT(RND(Y)*X+Y):NEXT J,I
  18. 270 IF K9>(T9-T0) THEN T9=T0+K9
  19. 280 IF B9>0 THEN 300
  20. 290 GOSUB 560:Q(X,Y)=Q(X,Y)-10:B9=1
  21. 300 PRINT TAB(5)"STARTREK":K0=K9
  22. 310 PRINT"OBJECTIVE: DESTROY";K9;"KLINGON BATTLE CRUISERS IN";
  23. 320 PRINT INT(T9-T0);"YEARS.":PRINT" THE NUMBER OF STARBASES IS";B9
  24. 330 A=0:IF Q1<0 OR Q1>7 OR Q2<0 OR Q2>7 THEN N=0:S=0:K=0:GOTO 350
  25. 340 N=ABS(Q(Q1,Q2)):Q(Q1,Q2)=N:S=N-INT(N/10)*10:K=INT(N/100)
  26. 350 B=INT(N/10-K*10):GOSUB 560:S1=X:S2=Y
  27. 360 FOR I=0 TO 7:FOR J=0 TO 7:S(I,J)=1:NEXT J,I:S(S1,S2)=2
  28. 370 FOR I=0 TO 7:K3(I)=0:X=8:IF I<K THEN GOSUB 570:S(X,Y)=3:K3(I)=S9
  29. 380 K1(I)=X:K2(I)=Y:NEXT:I=S
  30. 390 IF B>0 THEN GOSUB 570:S(X,Y)=4
  31. 400 IF I>0 THEN GOSUB 570:S(X,Y)=5:I=I-1:GOTO 400
  32. 410 GOSUB 660:IF A=0 THEN GOSUB 590
  33. 420 IF E<=0 THEN 1570
  34. 430 I=1:IF D(I)>0 THEN 730
  35. 440 FOR I=0 TO 7:FOR J=0 TO 7:PRINT MID$(Q$,S(I,J),1);" ";:NEXT J
  36. 450 PRINT"  ";:ON I GOTO 490,500,510,520,530,540,550
  37. 460 PRINT"YEARS =";INT(T9-T)
  38. 470 R(Q1,Q2)=ABS(Q(Q1,Q2))
  39. 480 NEXT:GOTO 760
  40. 490 PRINT"STARDATE=";T:GOTO 480
  41. 500 PRINT"CONDITION: ";C$:GOTO 480
  42. 510 PRINT"QUADRANT=";Q1+1;"-";Q2+1:GOTO 480
  43. 520 PRINT"SECTOR =";S1+1;"-";S2+1:GOTO 480
  44. 530 PRINT"ENERGY=";E:GOTO 480
  45. 540 PRINT D$(4);"=";P:GOTO 480
  46. 550 PRINT"KLINGONS LEFT=";K9:GOTO 480
  47. 560 X=INT(RND(1)*8):Y=INT(RND(1)*8):RETURN
  48. 570 GOSUB 560:IF S(X,Y)>1 THEN 570
  49. 580 RETURN
  50. 590 IF K<1 THEN RETURN
  51. 600 IF C$="DOCKED" THEN PRINT"STARBASE PROTECTS ENTERPRISE":RETURN
  52. 610 FOR I=0 TO 7:IF K3(I)<=0 THEN NEXT:RETURN
  53. 620 H=K3(I)*.4*RND(1):K3(I)=K3(I)-H:H=H/(FND(0)^.4):E=E-H
  54. 630 E$="ENTERPRISE FROM":N=E:GOSUB 640:NEXT:RETURN
  55. 640 PRINT H;"UNIT HIT ON ";E$;" SECTOR";K1(I)+1;"-";K2(I)+1;
  56. 650 PRINT" (";N;"LEFT)":RETURN
  57. 660 FOR I=S1-1 TO S1+1:FOR J=S2-1 TO S2+1
  58. 670 IF I<0 OR I>7 OR J<0 OR J>7 THEN 690
  59. 680 IF S(I,J)=4 THEN C$="DOCKED":E=E0:P=P0:GOSUB 720:RETURN
  60. 690 NEXT J,I:IF K>0 THEN C$="RED":RETURN
  61. 700 IF E<E0*.1 THEN C$="YELLOW":RETURN
  62. 710 C$="GREEN":RETURN
  63. 720 FOR N=0 TO 5:D(N)=0:NEXT:RETURN
  64. 730 PRINT D$(I);" DAMAGED.";
  65. 740 PRINT" ";D(I);"YEARS ESTIMATED FOR REPAIR.":PRINT
  66. 750 IF A=1 THEN RETURN
  67. 760 INPUT"COMMAND";A
  68. 770 IF A<1 OR A>6 THEN 790
  69. 780 ON A GOTO 820,410,1430,1320,800,1490
  70. 790 FOR I=0 TO 5:PRINT I+1;"= ";D$(I):NEXT:GOTO760
  71. 800 IF D(4)>0THEN PRINT"SPACE CRUD BLOCKING TUBES ";:I=4:GOTO 740
  72. 810 N=15:IF P<1 THEN PRINT"NO TORPEDOES LEFT":GOTO 760
  73. 820 IF A=5 THEN PRINT"TORPEDO ";
  74. 830 INPUT"COURSE (1-8.9)";C:IF C<1 THEN 760
  75. 840 IF C>9 THEN 820
  76. 850 IF A=5 THEN P=P-1:PRINT"TRACK:  ";:GOTO1010
  77. 860 INPUT"WARP (0-12)";W:IF W<=0 THEN 820
  78. 870 IF W<=.2 OR D(0)<=0 THEN 890
  79. 880 I=0:PRINT D$(I);" DAMAGED, MAX IS .2  ";:GOSUB740:GOTO860
  80. 890 GOSUB 590:IF E<=0 THEN 1570
  81. 900 IF RND(1)>.25 THEN 980
  82. 910 X=INT(RND(1)*6):IF RND(1)>.5 THEN 940
  83. 920 D(X)=D(X)+INT(6-RND(1)*5):PRINT"**SPACE STORM, ";
  84. 930 PRINT D$(X);" DAMAGE**":I=X:GOSUB 740:D(X)=D(X)+1:GOTO980
  85. 940 FOR I=X TO 5:IF D(I)>0 THEN970
  86. 950 NEXT
  87. 960 FOR I=0 TO X:IF D(I)<=0 THEN NEXT:GOTO 980
  88. 970 D(I)=.5:PRINT"**SPOCK USED A NEW REPAIR TECHNIQUE**"
  89. 980 FOR I=0 TO 5:IF D(I)=0 THEN 1000
  90. 990 D(I)=D(I)-1:IF D(I)<=0 THEN D(I)=0:PRINT D$(I);" ARE FIXED!"
  91. 1000 NEXT:N=INT(W*8):E=E-N-N+.5:T=T+1:S(S1,S2)=1
  92. 1010 Y1=S1+.5:X1=S2+.5:IF T>T9 THEN 1570
  93. 1020 Y=(C-1)*.785398:X=COS(Y):Y=-SIN(Y)
  94. 1030 FOR I=1 TO N:Y1=Y1+Y:X1=X1+X:Y2=INT(Y1):X2=INT(X1)
  95. 1040 IF X2<0 OR X2>7 OR Y2<0 OR Y2>7 THEN 1260
  96. 1050 IF A=5 THEN PRINT Y2+1;"-";X2+1;"  ";
  97. 1060 IF S(Y2,X2)=1 THEN NEXT:GOTO 1170
  98. 1070 PRINT:IF A=1 THEN PRINT"BLOCKED BY ";
  99. 1080 ON S(Y2,X2)-3 GOTO 1150,1130
  100. 1090 PRINT"KLINGON";:IF A=1 THEN 1160
  101. 1100 FOR I=0 TO 7:IF Y2<>K1(I) THEN 1120
  102. 1110 IF X2=K2(I) THEN K3(I)=0
  103. 1120 NEXT:K=K-1:K9=K9-1:GOTO 1180
  104. 1130 PRINT"STAR";:IF A=5 THEN S=S-1:GOTO1180
  105. 1140 GOTO 1160
  106. 1150 PRINT"STARBASE";:IF A=5 THEN B=2:GOTO 1180
  107. 1160 PRINT" AT SECTOR";Y2+1;"-";X2+1:Y2=INT(Y1-Y):X2=INT(X1-X)
  108. 1170 S1=Y2:S2=X2:S(S1,S2)=2:A=2:GOTO 410
  109. 1180 PRINT" DESTROYED!";:IF B=2 THEN B=0:B9=B9-1:GOTO1200
  110. 1190 GOTO1230
  111. 1200 IF B9>1.1 THEN PRINTB9;"STARBASES LEFT....";:GOTO1230
  112. 1210 IF B9<.9 THEN PRINT" NO STARBASES LEFT....";:GOTO 1230
  113. 1220 PRINTB9;"STARBASE LEFT....";
  114. 1230 PRINT:S(Y2,X2)=1:Q(Q1,Q2)=K*100+B*10+S:IF K9<1 THEN 1600
  115. 1240 GOSUB 590:IF E<=0 THEN 1570
  116. 1250 GOSUB 660:GOTO 760
  117. 1260 IF A=5 THEN PRINT:PRINT"MISSED!":GOTO1240
  118. 1270 Q1=INT(Q1+W*Y+(S1+.5)/8):Q2=INT(Q2+W*X+(S2+.5)/8)
  119. 1280 IFQ1<0ORQ1>7ORQ2<0ORQ2>7THEN 1300
  120. 1290 GOTO 330
  121. 1300 Q1=INT(8*RND(1)):Q2=INT(8*RND(1))
  122. 1310 GOTO 330
  123. 1320 I=3:IF D(I)>0 THEN730
  124. 1330 INPUT"PHASERS READY: ENERGY UNITS TO FIRE";X:IF X<=0 THEN 760
  125. 1340 IF X>E THEN PRINT "ONLY GOT";E:GOTO 1330
  126. 1350 E=E-X:Y=K:FOR I=0 TO 7:IF K3(I)<=0 THEN 1410
  127. 1360 H=X/(Y*(FND(0)^.4)):K3(I)=K3(I)-H
  128. 1370 E$="KLINGON AT":N=K3(I):GOSUB 640
  129. 1380 IF K3(I)>0 THEN1410
  130. 1390 PRINT"**KLINGON DESTROYED**"
  131. 1400 K=K-1:K9=K9-1:S(K1(I),K2(I))=1:Q(Q1,Q2)=Q(Q1,Q2)-100
  132. 1410 NEXT:IF K9<1 THEN1600
  133. 1420 GOTO 1240
  134. 1430 I=2:IF D(I)>0 THEN 730
  135. 1440 PRINT D$(I);" FOR QUADRANT";Q1+1;"-";Q2+1
  136. 1450 FOR I=Q1-1TO Q1+1:FOR J=Q2-1 TO Q2+1:PRINT"   ";
  137. 1460 I=INT(I+.1):J=INT(J+.1)
  138. 1470 IF I<0 OR I>7 OR J<0 OR J>7 THEN PRINT"***";:GOTO1550
  139. 1480 Q(I,J)=ABS(Q(I,J)):R(I,J)=Q(I,J):GOTO1540
  140. 1490 I=5:IF D(I)>0 THEN 730
  141. 1500 PRINT"CUMULATIVE GALACTIC MAP FOR STARDATE";T
  142. 1510 FORI=0TO7:FORJ=0TO7:IFI=Q1ANDJ=Q2 THEN PRINT" +";:GOTO1530
  143. 1520 PRINT"  ";
  144. 1530 IF R(I,J)<0 THEN PRINT"***";:GOTO1550
  145. 1540 E$=STR$(R(I,J)):E$="00"+MID$(E$,2):PRINT RIGHT$(E$,3);
  146. 1550 NEXT J:PRINT:NEXT I:GOTO 760
  147. 1560 PRINT:PRINT"IT IS STARDATE";T:RETURN
  148. 1570 GOSUB 1560:PRINT"THANKS TO YOUR BUNGLING, THE FEDERATION WILL BE"
  149. 1580 PRINT"CONQURED BY THE REMAINING";K9;"KLINGON CRUISERS!"
  150. 1590 PRINT"YOU ARE DEMOTED TO CABIN BOY!":GOTO1630
  151. 1600 GOSUB 1560:PRINT"THE FEDERATION HAS BEEN SAVED!"
  152. 1610 PRINT"YOU ARE PROMOTED TO ADMIRAL":PRINT K0;"KLINGONS IN";
  153. 1620 PRINTINT(T-T0);"YEARS.  RATING=";INT(K0/(T-T0)*1000)
  154. 1630 INPUT"TRY AGAIN";E$:IF LEFT$(E$,1)="Y" THEN 200
  155.