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 / CPMUG003.ARK / S_TREK.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  5KB  |  213 lines

  1. 10    REMARK - STAR TREK BY DAN DRUID FOR BASIC-E
  2. 20    RANDOMIZE
  3. 90    DIM S(7,2)
  4. 110    FOR I = 1 TO 2
  5. 120    FOR J = 1 TO 6
  6. 130    LET S(J,I) = 1
  7. 140    NEXT J
  8. 150    LET S(7,I) = 0
  9. 160    NEXT I
  10. 170    REM GENERATE RANGE AND BEARING
  11.     PRINT "STARTREK - VERSION 1.0"
  12.     PRINT "COMMANDS ARE:"
  13.     PRINT "1 = FIRE FORWARD PHASORS"
  14.     PRINT "2 = FIRE REAR PHASORS"
  15.     PRINT "3 = FIRE PHOTON TORPEDO"
  16.     PRINT "4 = MANEUVER TO ATTACK"
  17.     PRINT "5 = ATTEMPT TO BREAK CONTACT"
  18.     PRINT "6 = SELF-DESTRUCT"
  19.     PRINT "7 = SURRENDER"
  20.     PRINT "GOOD LUCK"
  21.     PRINT
  22. 180    PRINT "ENTER STAR DATE"
  23. 190    INPUT A
  24. 200    LET A2 = -ABS(A/1000)
  25. 205    RANDOMIZE
  26. 210    LET R = 10^7*RND
  27. 221    RANDOMIZE
  28. 220    LET B = 180*RND
  29. 230    LET I = 1
  30. 240    REMARK - ODD MOVES ARE THE ENTERPRISE, EVEN KLINGON
  31. 250    PRINT "KLINGON APPROACHING"
  32. 260    PRINT "RANGE = ";R;" KM, BEARING = ";B;" DEGREES."
  33. 270    INPUT "COMMAND";C
  34. 280    PRINT "WORKING"
  35. 290    PRINT C
  36. 300    I = 1
  37. 310    J = 2
  38. 320    H = 0
  39. 330    ON C GOSUB 790, 920, 1040, 1140, 1180, 1250, 1310
  40. 340    GOTO 1360
  41. 350    REMARK - KLINGON MOVE SELECTION
  42. 360    I = 2
  43. 370    REMARK - CHECK KLINGON PHASOR STATUS
  44. 380
  45.     W = S(1,I)+S(2,I)
  46. 390    J = 1
  47. 400    IF S(3,I) = 1 AND R>3E+06 AND B<100 THEN 710
  48. 410    IF W>0 AND R<3E+06 THEN 540
  49. 420    IF W<>0 THEN 480
  50. 430    REMARK - ATTEMPT TO BREAK CONTACT
  51. 440    PRINT "KLINGON ATTEMPTS TO BREAK CONTACT"
  52. 450    C = 5
  53. 460    GOSUB 1180
  54. 470    GOTO 1920
  55. 480    PRINT "KLINGON MANEUVERING TO ATTACK"
  56. 490    C = 4
  57. 500    GOSUB 1140
  58. 510    B = 0
  59. 520    H = 0
  60. 530    GOTO 1920
  61. 540    PRINT "KLINGON FIRES PHASOR"
  62. 550    C = 1
  63. 560    IF B<90 THEN 640
  64. 570    IF S(2,I)=0 THEN 600
  65. 580    GOSUB 920
  66. 590    GOTO 1360
  67. 600    B = B-90
  68. 610    GOSUB 790
  69. 620    B = B+90
  70. 630    GOTO 1360
  71. 640    IF S(1,I) = 0 THEN 670
  72. 650    GOSUB 790
  73. 660    GOTO 1360
  74. 670    B = B+90
  75. 680    GOSUB 920
  76. 690    B = B-90
  77. 700    GOTO 1360
  78. 710    PRINT "KLINGON FIRES PHOTON TORPEDO"
  79. 720    C = 3
  80. 730    B2 = B : B = 40
  81. 750    GOSUB 1040
  82. 760    B = B2
  83. 770    GOTO 1360
  84. 780    REMARK - FIRE FORWARD PHASORS
  85. 790    H = 0
  86. 800    IF S(1,I) <> 0 THEN 830
  87. 810    PRINT "FORWARD PHASORS NOT OPERATIONAL"
  88. 820    IF I = 1 THEN 260
  89. 830    R1 = 1-.2*(R/1E+06)
  90. 840    B1 = (90-B)/90
  91. 850    IF B1 < 0 OR R > 5E+6 THEN 900
  92. 860    REMARK - GENERATE RND(0-1)
  93. 870    IF R1 < RND THEN 900
  94. 880    H = 1
  95. 890    P = 4
  96. 900    RETURN
  97. 910    REMARK - REAR PHASOR
  98. 920    IF S(2,I) <> 0 THEN 960
  99. 930    PRINT "REAR PHASORS NOT OPERATIONAL"
  100. 940    REMARK - 
  101. 950    IF I = 1 THEN 260
  102. 960    H = 0
  103. 970    R1 =1-0.2*R*1E-06
  104. 980    REMARK - RANGE BEARING CHECK
  105. 990    IF R>5E+06 OR B<90 THEN 1030
  106. 1000    IF R1<RND THEN 1030
  107. 1010    H = 1
  108. 1020    P = 2
  109. 1030    RETURN
  110. 1040    H = 0
  111. 1050    IF S(3,I)<>0 THEN 1080
  112. 1060    PRINT "PHOTON TORPEDO NOT OPERATIONAL"
  113. 1070    IF I=1 THEN 260
  114. 1080    IF R<2E+06 OR B>90 THEN 1130
  115. 1090    R2 = (1-B/90)*(2*R/1E+08)
  116. 1100    IF R2 < RND THEN 1130
  117. 1110    H = 1
  118. 1120    P = 8
  119. 1130    RETURN
  120. 1140    R = R*(1-0.5*S(4,I))
  121. 1150    B = 0
  122. 1160    H = 0
  123. 1170    RETURN
  124. 1180    R = R*(1+S(4,I)+0.05*S(6,1))
  125. 1190    IF R>1E+08 THEN 1230
  126. 1200    PRINT "CONTACT NOT BROKEN"
  127. 1210    H = 0
  128. 1220    RETURN
  129. 1230    PRINT "CONTACT LOST"
  130. 1240    GOTO 10
  131. 1250    PRINT"SELF DESTRUCT ACTIVATED"
  132. 1260    FOR I=10 TO 1 STEP -1
  133. 1270    PRINT I
  134. 1280    NEXT I
  135. 1290    PRINT "BOOM"
  136. 1300    GOTO 10
  137. 1310    PRINT"MESSAGE FROM KLINGON*** I ACCEPT YOUR SURRENDER"
  138. 1320    PRINT "PREPARE TO BE BOARDED"
  139. 1330    PRINT "*** MESSAGE FROM STARFLEET COMMAND"
  140. 1340    PRINT "YOU COWARD"
  141. 1350    GOTO 10
  142. 1360    LET J=3-I
  143. 1370    IF C>3 THEN 1920
  144. 1380    REMARK - DAMAGE ASSESSMENT
  145. 1390    IF H<>0 THEN 1440
  146. 1400    PRINT "MISS"
  147. 1410    GOTO 1920
  148. 1420    REM
  149. 1430    REM
  150. 1440    PRINT "HIT"
  151. 1450    D = P*(S(5,J))
  152. 1460    IF D<=2 THEN 1480
  153. 1470    D = 2
  154. 1480    S(7,J) = S(7,J)+D
  155. 1490    S(5,J) = S(5,J)-P/100
  156. 1500    Z=10-INT(S(7,J))
  157. 1510    IF J=1 THEN 1580
  158. 1520    REMARK - DAMAGE DONE TO KLINGON
  159. 1530    PRINT"SCANNER REPORT ON KLINGON"
  160. 1540    IF Z>1 THEN 1610
  161. 1550    PRINT "KLINGON DESTROYED"
  162. 1560    GOTO 10
  163. 1570    REMARK
  164. 1580    PRINT "ENTERPRISE DAMAGE REPORT"
  165. 1590    IF Z>0 THEN 1610
  166. 1600    Z = 1
  167. 1610    ON Z GOTO 1620, 1640, 1850, 1730, 1730, 1780, 1780, 1780, 1830, 1830
  168. 1620    PRINT"ENTERPRISE DESTROYED"
  169. 1630    GOTO 10
  170. 1640    PRINT"WEAPON SYSTEMS DESTROYED"
  171. 1650    PRINT"WARP DRIVE DESTROYED"
  172. 1660    PRINT"MAJOR STRUCTURAL DAMAGE"
  173. 1670    PRINT"SHIELDS BUCKLING"
  174. 1680    S(1,J) = 0
  175. 1690    S(2,J) = 0
  176. 1700    S(3,J) = 0
  177. 1710    S(4,J) = 0
  178. 1720    GOTO 1920
  179. 1730    PRINT"PHASORS DESTROYED"
  180. 1740    PRINT"MINOR DAMAGE AMIDSHIPS"
  181. 1750    PRINT"SHIELDS WEAKENING"
  182. 1760    S(1,J)=0 : S(2,J) = 0
  183. 1770    GOTO 1920
  184. 1780    PRINT"FORWARD PHASORS DESTROYED"
  185. 1790    PRINT"MINOR DAMAGE AMIDSHIPS"
  186. 1800    PRINT"SHIELDS WEAKENING"
  187. 1810    S(1,J) = 0
  188. 1820    GOTO 1920
  189. 1830    PRINT"SHIELDS HOLDING -- NO DAMAGE"
  190. 1840    GOTO 1920
  191. 1850    PRINT"WEAPONS SYSTEMS DEACTIVATED"
  192. 1860    PRINT"DILITHIUM CRYSTALS OVERHEATING"
  193. 1870    S(1,J) = 0
  194. 1880    S(2,J) = 0
  195. 1890    S(3,J) = 0
  196. 1900    GOTO 1920
  197. 1910    REMARK - NEW RANGE AND BEARING
  198. 1905    ALPHA = .05*(S(6,1)+S(6,2))
  199. 1906    BETA = S(4,1)+S(4,2)
  200. 1920    R3 = .5*(BETA + ALPHA)
  201. 1925    RANDOMIZE
  202. 1930    R = R+R3*(RND-.5)*1E+06
  203. 1940    R=ABS(R)
  204. 1945    RANDOMIZE
  205. 1950    B=ABS(B-150+20*RND)
  206. 1960    IF B>180 THEN 2000
  207. 1970    I = J
  208. 1980    J = 3-I
  209. 1990    ON I GOTO 260, 360
  210. 2000    B = ABS(360-B)
  211. 2010    GOTO 1970
  212. 2020    END
  213.