home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / BASIC / EBASIC.ZIP / STREK.BAS < prev    next >
Encoding:
BASIC Source File  |  1987-01-11  |  5.0 KB  |  204 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 1REM PLOTS SIN & COS - 1 CYCLE - ON PLOT.DAT
  137. PLOT$="PLOT.DAT"
  138. FILE PLOT$
  139.     REM USER FUNCTION FOR X MODULO 2 (0=EVEN, 1=ODD)
  140. DEF FNEVEN(X)=X-2*INT(X/2)
  141.     REM USER FUNCTION TO A CHAR AT POSITION IN OLD STRING
  142. DEF FNSTRINGFIX$(OLD$,FIG$,POSITION) =    \
  143.     LEFT$(OLD$,POSITION-1) + FIG$ + MID$(OLD$,POSITION+1,1000)
  144. BAR$="!"
  145. BLANK$="                             "
  146. DUMMY$=BAR$+BLANK$+BAR$+BLANK$+BAR$
  147. PRINT # 1;BLANK$+"SINE = *          COSINE = +"
  148. PRINT # 1; "  "
  149. N$="      -1.0   -.8   -.6   -.4   -.2    .1520    REMARK - DAMAGE DONE TO KLINGON
  150. 1530    PRINT"SCANNER REPORT ON KLINGON"
  151. 1540    IF Z>1 THEN 1610
  152. 1550    PRINT "KLINGON DESTROYED"
  153. 1560    GOTO 10
  154. 1570    REMARK
  155. 1580    PRINT "ENTERPRISE DAMAGE REPORT"
  156. 1590    IF Z>0 THEN 1610
  157. 1600    Z = 1
  158. 1610    ON Z GOTO 1620, 1640, 1850, 1730, 1730, 1780, 1780, 1780, 1830, 1830
  159. 1620    PRINT"ENTERPRISE DESTROYED"
  160. 1630    GOTO 10
  161. 1640    PRINT"WEAPON SYSTEMS DESTROYED"
  162. 1650    PRINT"WARP DRIVE DESTROYED"
  163. 1660    PRINT"MAJOR STRUCTURAL DAMAGE"
  164. 1670    PRINT"SHIELDS BUCKLING"
  165. 1680    S(1,J) = 0
  166. 1690    S(2,J) = 0
  167. 1700    S(3,J) = 0
  168. 1710    S(4,J) = 0
  169. 1720    GOTO 1920
  170. 1730    PRINT"PHASORS DESTROYED"
  171. 1740    PRINT"MINOR DAMAGE AMIDSHIPS"
  172. 1750    PRINT"SHIELDS WEAKENING"
  173. 1760    S(1,J)=0 : S(2,J) = 0
  174. 1770    GOTO 1920
  175. 1780    PRINT"FORWARD PHASORS DESTROYED"
  176. 1790    PRINT"MINOR DAMAGE AMIDSHIPS"
  177. 1800    PRINT"SHIELDS WEAKENING"
  178. 1810    S(1,J) = 0
  179. 1820    GOTO 1920
  180. 1830    PRINT"SHIELDS HOLDING -- NO DAMAGE"
  181. 1840    GOTO 1920
  182. 1850    PRINT"WEAPONS SYSTEMS DEACTIVATED"
  183. 1860    PRINT"DILITHIUM CRYSTALS OVERHEATING"
  184. 1870    S(1,J) = 0
  185. 1880    S(2,J) = 0
  186. 1890    S(3,J) = 0
  187. 1900    GOTO 1920
  188. 1910    REMARK - NEW RANGE AND BEARING
  189. 1905    ALPHA = .05*(S(6,1)+S(6,2))
  190. 1906    BETA = S(4,1)+S(4,2)
  191. 1920    R3 = .5*(BETA + ALPHA)
  192. 1925    RANDOMIZE
  193. 1930    R = R+R3*(RND-.5)*1E+06
  194. 1940    R=ABS(R)
  195. 1945    RANDOMIZE
  196. 1950    B=ABS(B-150+20*RND)
  197. 1960    IF B>180 THEN 2000
  198. 1970    I = J
  199. 1980    J = 3-I
  200. 1990    ON I GOTO 260, 360
  201. 2000    B = ABS(360-B)
  202. 2010    GOTO 1970
  203. 2020    END
  204.