D10d3

StarTrek 16K for BeEhBasic

Jun 29th, 2023
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.46 KB | Gaming | 0 0
  1. SCR
  2. LOMEM=768
  3. HIMEM=16384
  4. 10 FOR I=1 TO 40: ? "*";:NEXT I: ?
  5. 20 ? "*";: ?TAB(39): ? "*"
  6. 30 ? "*";: ?TAB(39): ? "*"
  7. 40 ? "*";: ?TAB(39): ? "*"
  8. 50 ? "*";: ?TAB(15): ? "STAR TREK";: ?TAB(25): ? "*"
  9. 60 ? "*";: ?TAB(39): ? "*"
  10. 70 ? "*";: ?TAB(39): ? "*"
  11. 80 ? "*";: ?TAB(13): ? "BY VINCE BRIEL";: ?TAB(25): ? "*"
  12. 90 ? "*";: ?TAB(39): ? "*"
  13. 100 ? "* PORTED TO EHBASIC BY JASON BENSON *"
  14. 110 ? "*";: ?TAB(39): ? "*"
  15. 120 ? "*";: ?TAB(39): ? "*"
  16. 130 FOR I=1 TO 40: ? "*";:NEXT I: ?
  17. 140 ?:?
  18. 150 DIM G(100),S(100),A$(15),N$(25)
  19. 160 A$(1)="-":A$(2)=".":A$(3)="=" :REM ENTERPRISE -.=
  20. 162 A$(4)=" ":A$(5)="*":A$(6)=" " :REM STAR *
  21. 164 A$(7)=">":A$(8)="!":A$(9)="<" :REM BASE >!<
  22. 166 A$(10)="/":A$(11)="=":A$(12)="\": REM KLINGON /=\
  23. 168 A$(13)="-":A$(14)="=":A$(15)="-": REM ROMULAN -=-
  24. 170 INPUT "WHAT IS YOUR NAME CAPTAIN";N$
  25. 250 INPUT "SKILL LEVEL (1-5) 5 IS HARDEST";S
  26. 260 IF S>0 AND S<6 THEN 280
  27. 270 ? "CHOOSE A NUMBER BETWEEN 1 AND 5 PLEASE.":GOTO 250
  28. 280 ?:?:? "SETTING UP THE GALAXY"
  29. 290 FOR I=1 TO 100:G(I)=0:NEXT I
  30. 300 E1=5*S+INT(RND(0)*10):E7=2000:S1=0:T=10
  31. 310 FOR I=1 TO E1
  32. 320 X=INT(RND(0)*10)+1:Y=INT(RND(0)*10)+1:C=(10*Y+X)-10
  33. 325 IF G(C)>=100 THEN 320
  34. 330 G(C)=G(C)+100:?".";
  35. 340 NEXT I
  36. 345 ?""
  37. 350 FOR I=1 TO 7-S
  38. 360 X=INT(RND(0)*10)+1:Y=INT(RND(0)*10)+1:C=(10*Y+X)-10:G=G(C)
  39. 370 IF G<100 THEN 390
  40. 380 G=G-100:GOTO 370
  41. 390 IF G>=10 THEN 360
  42. 400 G(C)=G(C)+10:?".";
  43. 410 NEXT I
  44. 415 ?""
  45. 420 G=INT(RND(0)*300)+1:FOR I=1 TO G
  46. 430 X=INT(RND(0)*10)+1:Y=INT(RND(0)*10)+1:C=(10*Y+X)-10
  47. 440 G(C)=G(C)+1:?".";:NEXT I
  48. 445 ?""
  49. 450 REM SET UP RANDOM X,Y CORDINATES FOR WHOLE GALAXY
  50. 460 X1=INT(RND(0)*10)+1:Y1=INT(RND(0)*10)+1:GOTO 2000
  51. 470 ?:? "LONG RANGE SENSOR SCAN:":?:? E1;" ENEMIES REMAINING.":?
  52. 475 ?"(KLINGONS|STATIONS|STARS)":?
  53. 480 IF X1>1 THEN 500
  54. 490 PRINT " 10 1 2":GOTO 530
  55. 500 IF X1<10 THEN 520
  56. 510 PRINT " 9 10 1":GOTO 530
  57. 520 PRINT TAB(7);:PRINT X1-1;" ";X1;" ";X1+1
  58. 530 FOR Y=Y1-1 TO Y1+1:Y2=Y:IF Y2<1 THEN Y2=10
  59. 540 IF Y2>10 THEN Y2=1
  60. 550 FOR I=1 TO 22:? "-";:NEXT I:?:? Y2;:IF Y2<10 THEN ? " ";
  61. 560 PRINT " :";:N=1:FOR X=X1-1 TO X1+1:X2=X:IF X2<1 THEN X2=10
  62. 570 IF X2>10 THEN X2=1
  63. 580 IF X2=1 THEN 600
  64. 590 REM ?TAB(N*6)
  65. 600 C=(10*Y2+X2)-10:IF G(C)<100 THEN PRINT"0";
  66. 610 IF G(C)<10 THEN PRINT "0";
  67. 620 PRINT G(C);" : ";:N=N+1:NEXT X:PRINT:N=1:NEXT Y
  68. 630 FOR I=1 TO 22:PRINT "-";:NEXT I:PRINT:RETURN
  69. 650 REM SET UP OBJECTS IN QUADRANT PLACE ENTERPRISE FIRST
  70. 660 X4=INT(RND(0)*10)+1:Y4=INT(RND(0)*10)+1:C=(10*Y4+X4)-10:E6=0:E5=0
  71. 670 FOR I=1 TO 10:?:NEXT I
  72. 680 ? "ENTERING QUADRANT ";X1;",";Y1
  73. 690 FOR I=1 TO 100:S(I)=0:NEXT I:S(C)=1:C=(10*Y1+X1)-10:G=G(C)
  74. 700 IF G<100 THEN 760
  75. 710 X=INT(RND(0)*10)+1:Y=INT(RND(0)*10)+1:C=(10*Y+X)-10
  76. 715 IF S(C)<>0 THEN 710
  77. 720 D=INT(RND(0)*10)+1:IF D=1 THEN 740
  78. 730 S(C)=4:E6=100:E5=4:GOTO 750
  79. 740 S(C)=5:E6=200:E5=5
  80. 750 G=G-100
  81. 760 IF G<10 THEN 790
  82. 770 X=INT(RND(0)*10)+1:Y=INT(RND(0)*10)+1:C=(10*Y+X)-10
  83. 775 IF S(C)<>0 THEN 770
  84. 780 S(C)=3:G=G-10:IF G>=10 THEN 770
  85. 790 IF G=0 THEN 840
  86. 800 FOR I=1 TO G
  87. 810 X=INT(RND(0)*10)+1:Y=INT(RND(0)*10)+1:C=(10*Y+X)-10
  88. 815 IF S(C)<>0 THEN 810
  89. 820 S(C)=2:NEXT I
  90. 840 RETURN
  91. 850 REM ? QUADRANT
  92. 860 ?:? "QUAD ";X1;",";Y1;" SEC ";X4;",";Y4;" COND: ";
  93. 865 C1=3:C=(10*Y1+X1)-10:IF G(C) < 10 THEN 880
  94. 870 C1=2
  95. 880 IF G(C) < 100 THEN 900
  96. 890 C1=1
  97. 900 IF C1=1 THEN ? "RED"
  98. 910 IF C1=2 THEN ? "YELLOW"
  99. 920 IF C1=3 THEN ? "GREEN"
  100. 930 FOR I=1 TO 30:? "-";:NEXT I:
  101. 935 ?:FOR Y=1 TO 10:FOR X=1 TO 10:C=(10*Y+X)-10:IF S(C)<>0 THEN 950
  102. 940 ? " ";:GOTO 960
  103. 950 ? A$((S(C)*3)-2);:? A$((S(C)*3)-1);:? A$(S(C)*3);
  104. 955 REM PRINT A$((S(C)*3)-2,S(C)*3);
  105. 960 NEXT X:?:NEXT Y:FOR I=1 TO 30:? "-";:NEXT I:?:?
  106. 970 ? "ENERGY=";E7;:?TAB(13):? "SHIELDS=";S1;:?TAB(13)
  107. 975 ? "TORP=";T:RETURN
  108. 1000 REM PHASORS
  109. 1010 INPUT "ENTER SHIELD LEVEL";G:IF G<E7 THEN 1030
  110. 1020 ? "NOT ENOUGH ENERGY.":GOTO 1000
  111. 1030 S1=G:E7=E7-G:IF S1>0 THEN 1050
  112. 1040 S1=0
  113. 1050 RETURN
  114. 1100 REM ENEMY FIRES
  115. 1110 IF E6>50 THEN 1130
  116. 1120 RETURN
  117. 1130 G=INT(RND(0)*(E6/2))+1:IF E5=5 THEN 1220
  118. 1140 ? "KLINGON FIRES PHASOR BLAST ";G;" STRONG."
  119. 1150 S1=S1-G:E6=E6-(G/2):IF S1>0 THEN 1210
  120. 1160 E7=E7-G*2:S1=0:? "SHIELDS DOWN! ";G*2;" DAMAGE TO SHIPS ENERGY"
  121. 1170 IF E7>0 THEN 1210
  122. 1180 ? "THE ENTERPRISE WAS DESTROYED!"
  123. 1190 ? "YOUR NEXT OF KIN WILL BE NOTIFIED."
  124. 1200 END
  125. 1210 RETURN
  126. 1220 G=G*(INT(RND(0)*3)+1):? "ROMULAN FIRES STRANGE WEAPON...":
  127. 1225 ? "CAUSES ";G;" IN DAMAGE"
  128. 1230 GOTO 1150
  129. 1250 REM WARP SPEED
  130. 1260 IF S1<=0 THEN 1290
  131. 1270 ? "CAN'T WARP WITH SHIELDS UP.":GOTO 1900
  132. 1290 GOSUB 7910:INPUT "DIRECTION ";T1:IF T1<1 OR T1>8 THEN GOTO 1290
  133. 1300 INPUT "WARP SPEED";G:IF G*10 < E7 THEN 1360
  134. 1320 ? "NOT ENOUGH ENERGY.":GOTO 1900
  135. 1360 FOR I=1 TO G:IF T1<>1 THEN 1450
  136. 1380 X1=X1+1:IF X1>10 THEN X1=1
  137. 1420 Y1=Y1-1:IF Y1<1 THEN Y1=10
  138. 1450 IF T1<>2 THEN 1500
  139. 1480 X1=X1+1:IF X1>10 THEN X1=1
  140. 1500 IF T1<>3 THEN 1580
  141. 1520 X1=X1+1:IF X1>10 THEN X1=1
  142. 1540 Y1=Y1+1:IF Y1>10 THEN Y1=1
  143. 1580 IF T1<>4 THEN 1640
  144. 1600 Y1=Y1+1:IF Y1>10 THEN Y1=1
  145. 1640 IF T1<>5 THEN 1700
  146. 1660 X1=X1-1:IF X1<1 THEN X1=10
  147. 1680 Y1=Y1+1:IF Y1>10 THEN Y1=1
  148. 1700 IF T1<>6 THEN 1760
  149. 1740 X1=X1-1:IF X1<1 THEN X1=10
  150. 1760 IF T1<>7 THEN 1820
  151. 1780 X1=X1-1:IF X1<1 THEN X1=10
  152. 1800 Y1=Y1-1:IF Y1<1 THEN Y1=10
  153. 1820 IF T1<>8 THEN 1850
  154. 1840 Y1=Y1-1:IF Y1<1 THEN Y1=10
  155. 1850 E7=E7-10:NEXT I:GOSUB 650
  156. 1870 GOSUB 850
  157. 1900 RETURN
  158. 2000 GOSUB 650
  159. 2010 GOSUB 850
  160. 2020 ?:? "0:HELP 1:LRS 2:SRS"
  161. 2022 ? "3:WARP 4:SHIELDS 5:IMPULSE"
  162. 2024 ? "6:PHASER 7:TORPEDO 8:SELF DESTRUCT"
  163. 2026 ?:? "COMMAND CAPTAIN ";N$;" (0=HELP) ";
  164. 2030 INPUT">";C2
  165. 2040 IF G((10*Y1+X1)-10)<100 THEN 2070
  166. 2050 G=INT(RND(0)*5)+1:IF G>3 THEN 2070
  167. 2060 GOSUB 1100
  168. 2070 IF C2<>0 THEN 2100
  169. 2080 GOSUB 2360
  170. 2090 GOTO 2020
  171. 2100 IF C2<>1 THEN 2130
  172. 2110 GOSUB 470
  173. 2120 GOTO 2020
  174. 2130 IF C2<>2 THEN 2160
  175. 2140 GOSUB 850
  176. 2150 GOTO 2020
  177. 2160 IF C2<>3 THEN 2190
  178. 2170 GOSUB 1250
  179. 2180 GOTO 2020
  180. 2190 IF C2<>4 THEN 2220
  181. 2200 GOSUB 1000
  182. 2210 GOTO 2020
  183. 2220 IF C2<>5 THEN 2250
  184. 2230 GOSUB 2400
  185. 2240 GOTO 2020
  186. 2250 IF C2<>6 THEN 2280
  187. 2260 GOSUB 3000
  188. 2270 GOTO 2020
  189. 2280 IF C2<>7 THEN 2310
  190. 2290 GOSUB 4200
  191. 2300 GOTO 2020
  192. 2310 IF C2<>8 THEN 2350
  193. 2320 GOTO 7000
  194. 2350 ? "ENTER A VALID COMMAND.":GOTO 2020
  195. 2360 ?:? "COMMAND LIST:":?
  196. 2365 ? "0 = HELP, THIS LIST":? "1 = LONG RANGE SENSOR SCAN"
  197. 2370 ? "2 = SHORT RANGE SENSOR SCAN":? "3 = WARP ENGINES"
  198. 2375 ? "4 = SHIELD CONTROL":? "5 = IMPULSE ENGINES"
  199. 2380 ? "6 = PHASOR CONTROL":? "7 = PHOTON TORPEDO CONTROL"
  200. 2390 ? "8 = SELF DESTRUCT":RETURN
  201. 2400 GOSUB 7910:INPUT "DIRECTION (1-8)";D
  202. 2410 IF D>0 AND D<9 THEN 2440
  203. 2420 ? "ANSWER BETWEEN 1 AND 8."
  204. 2430 GOTO 2400
  205. 2440 INPUT "IMPULSE SPEED";J
  206. 2450 IF E7>J THEN 2480
  207. 2460 ? "YOU DON'T HAVE ENOUGH ENERGY!"
  208. 2470 RETURN
  209. 2480 S((10*Y4+X4)-10)=0:FOR I=1 TO J:IF D<>1 THEN 2510
  210. 2490 X4=X4+1:IF X4>10 THEN X4=1
  211. 2500 Y4=Y4-1:IF Y4<1 THEN Y4=10
  212. 2510 IF D<>2 THEN 2530
  213. 2520 X4=X4+1:IF X4>10 THEN X4=1
  214. 2530 IF D<>3 THEN 2560
  215. 2540 X4=X4+1:IF X4>10 THEN X4=1
  216. 2550 Y4=Y4+1:IF Y4>10 THEN Y4=1
  217. 2560 IF D<>4 THEN 2580
  218. 2570 Y4=Y4+1:IF Y4>10 THEN Y4=1
  219. 2580 IF D<>5 THEN 2610
  220. 2590 X4=X4-1:IF X4<1 THEN X4=10
  221. 2600 Y4=Y4+1:IF Y4>10 THEN Y4=1
  222. 2610 IF D<>6 THEN 2630
  223. 2620 X4=X4-1:IF X4<1 THEN X4=10
  224. 2630 IF D<>7 THEN 2660
  225. 2640 X4=X4-1:IF X4<1 THEN X4=10
  226. 2650 Y4=Y4-1:IF Y4<1 THEN Y4=10
  227. 2660 IF D<>8 THEN 2680
  228. 2670 Y4=Y4-1:IF Y4<1 THEN Y4=10
  229. 2680 E7=E7-1:G=S((10*Y4+X4)-10)
  230. 2690 IF G=0 THEN 2900
  231. 2700 IF G<>2 THEN 2750
  232. 2720 ? "YOU RAN INTO A STAR AND BURNED!"
  233. 2730 ? "YOUR NEXT OF KIN WILL BE NOTIFIED"
  234. 2740 END
  235. 2750 IF G<>3 THEN 2800
  236. 2770 ? "YOU RAMMED THE STARBASE!"
  237. 2780 ?:? "THOUSANDS ARE DEAD."
  238. 2790 ? N$;" WILL BE KNOWN AS A KILLER.":END
  239. 2800 ? "YOU RAMMED THE ENEMY SHIP"
  240. 2810 ? "IT WAS DESTROYED BUT SO WAS"
  241. 2820 ? "THE ENTERPRISE!":END
  242. 2900 NEXT I
  243. 2920 S((10*Y4+X4)-10)=1
  244. 2930 GOSUB 850
  245. 2940 GOSUB 4050
  246. 2950 RETURN
  247. 3000 REM PHASOR CONTROL
  248. 3010 IF E5<>0 THEN 3100
  249. 3020 ? "NO ENEMY TO LOCK PHASORS ONTO!":RETURN
  250. 3100 INPUT "AMOUNT OF ENERGY TO PHASORS";G
  251. 3110 IF G<E7 THEN 3140
  252. 3120 ? "YOU DON'T HAVE THAT MUCH ENERGY.":GOTO 3100
  253. 3130 E7=E7-G
  254. 3140 IF E5=5 THEN 3390
  255. 3150 R=INT(RND(0)*10)+1:IF R<>1 THEN 3300
  256. 3170 ? "PHASORS MISSED!":RETURN
  257. 3300 ? "KLINGON HIT WITH ";G;" PHASOR UNITS."
  258. 3310 E6=E6-G:IF E6>0 THEN 3380
  259. 3320 ? "*** KLINGON DESTROYED ***"
  260. 3330 G((10*Y1+X1)-10)=G((10*Y1+X1)-10)-100
  261. 3340 E1=E1-1:IF E1=0 THEN 4000
  262. 3350 E6=0:E5=0:FOR I=1 TO 100:IF S(I)=4 THEN S(I)=0
  263. 3360 IF S(I)=5 THEN S(I)=0
  264. 3370 NEXT I:GOSUB 850
  265. 3380 RETURN
  266. 3390 R=INT(RND(0)*5)+1:IF R>3 THEN 3410
  267. 3400 ? "ROMULAN SHIP AVOIDED PHASOR FIRE!":RETURN
  268. 3410 ? "ROMULAN HIT WITH ";G;" PHASOR UNITS."
  269. 3420 E6=E6-G:IF E6>0 THEN 3380
  270. 3430 ? "*** ROMULAN SHIP DESTROYED ***"
  271. 3440 G((10*Y1+X1)-10)=G((10*Y1+X1)-10)-100:E1=E1-1:IF E1=0 THEN 4000
  272. 3450 GOTO 3350
  273. 4000 FOR I=1 TO 24:?:NEXT I
  274. 4010 ? "YOU HAVE DEFENDED THE GALAXY AND DEFEATED"
  275. 4020 ? "ALL ENEMIES! YOU WILL BE PROMOTED TO"
  276. 4030 ? "ADMIRAL BEFORE BEING SUCKED OUT INTO"
  277. 4040 ? "SPACE IN STAR TREK GENERATIONS."
  278. 4050 REM CHECK IF DOCKED
  279. 4060 D9=0:X=X4-1:IF X<1 THEN X=10
  280. 4070 X9=X4+1:IF X9>10 THEN X9=1
  281. 4080 IF S((10*Y4+X)-10)=3 THEN 4120
  282. 4090 IF S((10*Y4+X9)-10)=3 THEN 4120
  283. 4100 RETURN
  284. 4120 IF S1=0 THEN 4140
  285. 4130 ? "YOU CAN'T DOCK WITH SHIELDS UP.":RETURN
  286. 4140 ? "YOU ARE DOCKED WITH THE STARBASE":D9=1
  287. 4150 ? "ENERGY RESTORED":E7=2000:T=10:RETURN
  288. 4200 REM PHOTON TORPEDO CONTROL
  289. 4300 IF T>0 THEN 4500
  290. 4400 ? "YOU DON'T HAVE ANY TORPEDOS.":RETURN
  291. 4500 GOSUB 7910:INPUT "DIRECTION";D
  292. 4600 IF D>0 AND D<9 THEN 4800
  293. 4700 ? "PLEASE CHOOSE BETWEEN 1-8":GOTO 4500
  294. 4800 X5=X4:Y5=Y4:T=T-1:?:? "TRACKING TORPEDO PATH":?
  295. 5000 ?TAB(10):? X5;",";Y5: IF D<>1 THEN 5500
  296. 5100 X5=X5+1:IF X5>10 THEN 6000
  297. 5300 Y5=Y5-1:IF Y5<1 THEN 6000
  298. 5500 IF D<>2 THEN 5560
  299. 5520 X5=X5+1:IF X5>10 THEN 6000
  300. 5560 IF D<>3 THEN 5680
  301. 5600 X5=X5+1:IF X5>10 THEN 6000
  302. 5640 Y5=Y5+1:IF Y5>10 THEN 6000
  303. 5680 IF D<>4 THEN 5720
  304. 5700 Y5=Y5+1:IF Y5>10 THEN 6000
  305. 5720 IF D<>5 THEN 5780
  306. 5740 X5=X5-1:IF X5<1 THEN 6000
  307. 5760 Y5=Y5+1:IF Y5>10 THEN 6000
  308. 5780 IF D<>6 THEN 5800
  309. 5790 X5=X5-1:IF X5<1 THEN 6000
  310. 5800 IF D<>7 THEN 5830
  311. 5810 X5=X5-1:IF X5<1 THEN 6000
  312. 5820 Y5=Y5-1:IF Y5<1 THEN 6000
  313. 5830 IF D<>8 THEN 5850
  314. 5840 Y5=Y5-1:IF Y5<1 THEN 6000
  315. 5850 V=S((10*Y5+X5)-10):IF V=0 THEN 5000
  316. 5860 IF V=2 THEN 6200
  317. 5870 IF V=3 THEN 6400
  318. 5880 IF V=4 THEN 6450
  319. 5890 IF V=5 THEN 6600
  320. 5900 GOTO 5000:REM CONTINUE UNTIL HIT SOMETHING OR LEAVE QUAD
  321. 6000 REM OUT OF QUADRANT
  322. 6100 ?:? " ***** TORPEDO MISSED *****":?:RETURN
  323. 6200 REM HIT STAR
  324. 6300 ? "TORPEDO EXPLODED IN THE STAR":?:RETURN
  325. 6400 ? " ***** STAR BASE DESTROYED *****":GOTO 2780
  326. 6450 ? "KLINGON HIT BY TORPEDO"
  327. 6460 IF INT(RND(0)*100)+1>98 THEN 6550
  328. 6470 ?:? "KLINGON DESTROYED"
  329. 6480 S((10*Y5+X5)-10)=0:G((10*Y1+X1)-10)=G((10*Y1+X1)-10)-100
  330. 6485 E1=E1-1:E5=0:E6=0:IF E1=0 THEN 4000
  331. 6490 ?:GOSUB 850
  332. 6500 RETURN
  333. 6550 ? "KLINGON SURVIVED IMPACT FROM TORPEDO":E6=E6/2:RETURN
  334. 6600 ? "ROMULAN HIT BY TORPEDO"
  335. 6610 IF INT(RND(0)*100)+1<50 THEN 6650
  336. 6620 ?:? "ROMULAN SHIP DESTROYED!":GOTO 6480
  337. 6650 ? "ROMULAN SHIELDS HOLDING":E6=E6/2:RETURN
  338. 7000 ?:? "SELF DESTRUCT SEQUENCE IS NOW ACTIVE"
  339. 7100 FOR X=10 TO 1 STEP -1
  340. 7200 ?TAB(19):? X:FOR Y=1 TO 1000:NEXT Y:NEXT X
  341. 7300 ?:?:? " **** KA-BOOM!!! ****"
  342. 7400 ? "PIECES OF THE ENTERPRISE ARE NOW"
  343. 7500 ? "SPREAD ACROSS THE GALAXY"
  344. 7600 ? "YOUR NEXT OF KIN WILL BE NOTIFIED."
  345. 7700 END
  346. 7910 PRINT " 7 8 1"
  347. 7920 PRINT " \ ^ /"
  348. 7930 PRINT " \^/"
  349. 7940 PRINT " 6 ----- 2"
  350. 7950 PRINT " /^\"
  351. 7960 PRINT " / ^ \"
  352. 7970 PRINT " 5 4 3"
  353. 7980 RETURN
  354.  
  355.  
Add Comment
Please, Sign In to add comment