D10d3 icon

StarTrek 16K for BeEhBasic

D10d3 | PRO | 06/30/23 03:47:32 AM UTC | 0 ⭐ | 260 👁️ | Never ⏰ | [star trek, BeEhBASIC, Ben Eater]
text |

11.46 KB

|

Gaming

|

0 👍

/

0 👎

SCR
LOMEM=768
HIMEM=16384
10 FOR I=1 TO 40: ? "*";:NEXT I: ? 
20 ? "*";: ?TAB(39): ? "*"             
30 ? "*";: ?TAB(39): ? "*"             
40 ? "*";: ?TAB(39): ? "*"             
50 ? "*";: ?TAB(15): ? "STAR TREK";: ?TAB(25): ? "*"
60 ? "*";: ?TAB(39): ? "*"             
70 ? "*";: ?TAB(39): ? "*"             
80 ? "*";: ?TAB(13): ? "BY VINCE BRIEL";: ?TAB(25): ? "*"
90 ? "*";: ?TAB(39): ? "*"             
100 ? "*  PORTED TO EHBASIC BY JASON BENSON   *"    
110 ? "*";: ?TAB(39): ? "*"             
120 ? "*";: ?TAB(39): ? "*"             
130 FOR I=1 TO 40: ? "*";:NEXT I: ?
140 ?:?
150 DIM G(100),S(100),A$(15),N$(25)
160 A$(1)="-":A$(2)=".":A$(3)="=" :REM ENTERPRISE -.=
162 A$(4)=" ":A$(5)="*":A$(6)=" " :REM STAR *
164 A$(7)=">":A$(8)="!":A$(9)="<" :REM BASE >!<
166 A$(10)="/":A$(11)="=":A$(12)="\": REM KLINGON /=\
168 A$(13)="-":A$(14)="=":A$(15)="-": REM ROMULAN -=-
170 INPUT "WHAT IS YOUR NAME CAPTAIN";N$
250 INPUT "SKILL LEVEL (1-5) 5 IS HARDEST";S
260 IF S>0 AND S<6 THEN 280
270 ? "CHOOSE A NUMBER BETWEEN 1 AND 5 PLEASE.":GOTO 250
280 ?:?:? "SETTING UP THE GALAXY"
290 FOR I=1 TO 100:G(I)=0:NEXT I
300 E1=5*S+INT(RND(0)*10):E7=2000:S1=0:T=10
310 FOR I=1 TO E1
320 X=INT(RND(0)*10)+1:Y=INT(RND(0)*10)+1:C=(10*Y+X)-10
325 IF G(C)>=100 THEN 320
330 G(C)=G(C)+100:?".";
340 NEXT I
345 ?""
350 FOR I=1 TO 7-S
360 X=INT(RND(0)*10)+1:Y=INT(RND(0)*10)+1:C=(10*Y+X)-10:G=G(C)
370 IF G<100 THEN 390
380 G=G-100:GOTO 370
390 IF G>=10 THEN 360
400 G(C)=G(C)+10:?".";
410 NEXT I
415 ?""
420 G=INT(RND(0)*300)+1:FOR I=1 TO G
430 X=INT(RND(0)*10)+1:Y=INT(RND(0)*10)+1:C=(10*Y+X)-10
440 G(C)=G(C)+1:?".";:NEXT I
445 ?""
450 REM SET UP RANDOM X,Y CORDINATES FOR WHOLE GALAXY
460 X1=INT(RND(0)*10)+1:Y1=INT(RND(0)*10)+1:GOTO 2000
470 ?:? "LONG RANGE SENSOR SCAN:":?:? E1;" ENEMIES REMAINING.":?
475 ?"(KLINGONS|STATIONS|STARS)":?
480 IF X1>1 THEN 500
490 PRINT "      10    1     2":GOTO 530
500 IF X1<10 THEN 520
510 PRINT "      9     10    1":GOTO 530
520 PRINT TAB(7);:PRINT X1-1;"     ";X1;"     ";X1+1
530 FOR Y=Y1-1 TO Y1+1:Y2=Y:IF Y2<1 THEN Y2=10
540 IF Y2>10 THEN Y2=1
550 FOR I=1 TO 22:? "-";:NEXT I:?:? Y2;:IF Y2<10 THEN ? " ";
560 PRINT " :";:N=1:FOR X=X1-1 TO X1+1:X2=X:IF X2<1 THEN X2=10
570 IF X2>10 THEN X2=1
580 IF X2=1 THEN 600
590 REM ?TAB(N*6)
600 C=(10*Y2+X2)-10:IF G(C)<100 THEN PRINT"0";
610 IF G(C)<10 THEN PRINT "0";
620 PRINT G(C);" : ";:N=N+1:NEXT X:PRINT:N=1:NEXT Y
630 FOR I=1 TO 22:PRINT "-";:NEXT I:PRINT:RETURN
650 REM SET UP OBJECTS IN QUADRANT PLACE ENTERPRISE FIRST
660 X4=INT(RND(0)*10)+1:Y4=INT(RND(0)*10)+1:C=(10*Y4+X4)-10:E6=0:E5=0
670 FOR I=1 TO 10:?:NEXT I
680 ? "ENTERING QUADRANT ";X1;",";Y1
690 FOR I=1 TO 100:S(I)=0:NEXT I:S(C)=1:C=(10*Y1+X1)-10:G=G(C)
700 IF G<100 THEN 760
710 X=INT(RND(0)*10)+1:Y=INT(RND(0)*10)+1:C=(10*Y+X)-10
715 IF S(C)<>0 THEN 710
720 D=INT(RND(0)*10)+1:IF D=1 THEN 740
730 S(C)=4:E6=100:E5=4:GOTO 750
740 S(C)=5:E6=200:E5=5
750 G=G-100
760 IF G<10 THEN 790
770 X=INT(RND(0)*10)+1:Y=INT(RND(0)*10)+1:C=(10*Y+X)-10
775 IF S(C)<>0 THEN 770
780 S(C)=3:G=G-10:IF G>=10 THEN 770
790 IF G=0 THEN 840
800 FOR I=1 TO G
810 X=INT(RND(0)*10)+1:Y=INT(RND(0)*10)+1:C=(10*Y+X)-10
815 IF S(C)<>0 THEN 810
820 S(C)=2:NEXT I
840 RETURN
850 REM ? QUADRANT
860 ?:? "QUAD ";X1;",";Y1;" SEC ";X4;",";Y4;" COND: ";
865 C1=3:C=(10*Y1+X1)-10:IF G(C) < 10 THEN 880
870 C1=2
880 IF G(C) < 100 THEN 900
890 C1=1
900 IF C1=1 THEN ? "RED"
910 IF C1=2 THEN ? "YELLOW"
920 IF C1=3 THEN ? "GREEN"
930 FOR I=1 TO 30:? "-";:NEXT I:
935 ?:FOR Y=1 TO 10:FOR X=1 TO 10:C=(10*Y+X)-10:IF S(C)<>0 THEN 950
940 ? "   ";:GOTO 960
950 ? A$((S(C)*3)-2);:? A$((S(C)*3)-1);:? A$(S(C)*3);
955 REM PRINT A$((S(C)*3)-2,S(C)*3);
960 NEXT X:?:NEXT Y:FOR I=1 TO 30:? "-";:NEXT I:?:?
970 ? "ENERGY=";E7;:?TAB(13):? "SHIELDS=";S1;:?TAB(13)
975 ? "TORP=";T:RETURN
1000 REM PHASORS
1010 INPUT "ENTER SHIELD LEVEL";G:IF G<E7 THEN 1030
1020 ? "NOT ENOUGH ENERGY.":GOTO 1000
1030 S1=G:E7=E7-G:IF S1>0 THEN 1050
1040 S1=0
1050 RETURN
1100 REM ENEMY FIRES
1110 IF E6>50 THEN 1130
1120 RETURN
1130 G=INT(RND(0)*(E6/2))+1:IF E5=5 THEN 1220
1140 ? "KLINGON FIRES PHASOR BLAST ";G;" STRONG."
1150 S1=S1-G:E6=E6-(G/2):IF S1>0 THEN 1210
1160 E7=E7-G*2:S1=0:? "SHIELDS DOWN! ";G*2;" DAMAGE TO SHIPS ENERGY"
1170 IF E7>0 THEN 1210
1180 ? "THE ENTERPRISE WAS DESTROYED!"
1190 ? "YOUR NEXT OF KIN WILL BE NOTIFIED."
1200 END
1210 RETURN
1220 G=G*(INT(RND(0)*3)+1):? "ROMULAN FIRES STRANGE WEAPON...":
1225 ? "CAUSES ";G;" IN DAMAGE"
1230 GOTO 1150
1250 REM WARP SPEED
1260 IF S1<=0 THEN 1290
1270 ? "CAN'T WARP WITH SHIELDS UP.":GOTO 1900
1290 GOSUB 7910:INPUT "DIRECTION ";T1:IF T1<1 OR T1>8 THEN GOTO 1290
1300 INPUT "WARP SPEED";G:IF G*10 < E7 THEN 1360
1320 ? "NOT ENOUGH ENERGY.":GOTO 1900
1360 FOR I=1 TO G:IF T1<>1 THEN 1450
1380 X1=X1+1:IF X1>10 THEN X1=1
1420 Y1=Y1-1:IF Y1<1 THEN Y1=10
1450 IF T1<>2 THEN 1500
1480 X1=X1+1:IF X1>10 THEN X1=1
1500 IF T1<>3 THEN 1580
1520 X1=X1+1:IF X1>10 THEN X1=1
1540 Y1=Y1+1:IF Y1>10 THEN Y1=1
1580 IF T1<>4 THEN 1640
1600 Y1=Y1+1:IF Y1>10 THEN Y1=1
1640 IF T1<>5 THEN 1700
1660 X1=X1-1:IF X1<1 THEN X1=10
1680 Y1=Y1+1:IF Y1>10 THEN Y1=1
1700 IF T1<>6 THEN 1760
1740 X1=X1-1:IF X1<1 THEN X1=10
1760 IF T1<>7 THEN 1820
1780 X1=X1-1:IF X1<1 THEN X1=10
1800 Y1=Y1-1:IF Y1<1 THEN Y1=10
1820 IF T1<>8 THEN 1850
1840 Y1=Y1-1:IF Y1<1 THEN Y1=10
1850 E7=E7-10:NEXT I:GOSUB 650
1870 GOSUB 850
1900 RETURN
2000 GOSUB 650
2010 GOSUB 850
2020 ?:? "0:HELP   1:LRS     2:SRS"
2022 ? "3:WARP   4:SHIELDS 5:IMPULSE"
2024 ? "6:PHASER 7:TORPEDO 8:SELF DESTRUCT"
2026 ?:? "COMMAND CAPTAIN ";N$;" (0=HELP) ";
2030 INPUT">";C2
2040 IF G((10*Y1+X1)-10)<100 THEN 2070
2050 G=INT(RND(0)*5)+1:IF G>3 THEN 2070
2060 GOSUB 1100
2070 IF C2<>0 THEN 2100
2080 GOSUB 2360
2090 GOTO 2020
2100 IF C2<>1 THEN 2130
2110 GOSUB 470
2120 GOTO 2020
2130 IF C2<>2 THEN 2160
2140 GOSUB 850
2150 GOTO 2020
2160 IF C2<>3 THEN 2190
2170 GOSUB 1250
2180 GOTO 2020
2190 IF C2<>4 THEN 2220
2200 GOSUB 1000
2210 GOTO 2020
2220 IF C2<>5 THEN 2250
2230 GOSUB 2400
2240 GOTO 2020
2250 IF C2<>6 THEN 2280
2260 GOSUB 3000
2270 GOTO 2020
2280 IF C2<>7 THEN 2310
2290 GOSUB 4200
2300 GOTO 2020
2310 IF C2<>8 THEN 2350
2320 GOTO 7000
2350 ? "ENTER A VALID COMMAND.":GOTO 2020
2360 ?:? "COMMAND LIST:":?
2365 ? "0 = HELP, THIS LIST":? "1 = LONG RANGE SENSOR SCAN"
2370 ? "2 = SHORT RANGE SENSOR SCAN":? "3 = WARP ENGINES"
2375 ? "4 = SHIELD CONTROL":? "5 = IMPULSE ENGINES"
2380 ? "6 = PHASOR CONTROL":? "7 = PHOTON TORPEDO CONTROL"
2390 ? "8 =  SELF DESTRUCT":RETURN
2400 GOSUB 7910:INPUT "DIRECTION (1-8)";D
2410 IF D>0 AND D<9 THEN 2440
2420 ? "ANSWER BETWEEN 1 AND 8."
2430 GOTO 2400
2440 INPUT "IMPULSE SPEED";J
2450 IF E7>J THEN 2480
2460 ? "YOU DON'T HAVE ENOUGH ENERGY!"
2470 RETURN
2480 S((10*Y4+X4)-10)=0:FOR I=1 TO J:IF D<>1 THEN 2510
2490 X4=X4+1:IF X4>10 THEN X4=1
2500 Y4=Y4-1:IF Y4<1 THEN Y4=10
2510 IF D<>2 THEN 2530
2520 X4=X4+1:IF X4>10 THEN X4=1
2530 IF D<>3 THEN 2560
2540 X4=X4+1:IF X4>10 THEN X4=1
2550 Y4=Y4+1:IF Y4>10 THEN Y4=1
2560 IF D<>4 THEN 2580
2570 Y4=Y4+1:IF Y4>10 THEN Y4=1
2580 IF D<>5 THEN 2610
2590 X4=X4-1:IF X4<1 THEN X4=10
2600 Y4=Y4+1:IF Y4>10 THEN Y4=1
2610 IF D<>6 THEN 2630
2620 X4=X4-1:IF X4<1 THEN X4=10
2630 IF D<>7 THEN 2660
2640 X4=X4-1:IF X4<1 THEN X4=10
2650 Y4=Y4-1:IF Y4<1 THEN Y4=10
2660 IF D<>8 THEN 2680
2670 Y4=Y4-1:IF Y4<1 THEN Y4=10
2680 E7=E7-1:G=S((10*Y4+X4)-10)
2690 IF G=0 THEN 2900
2700 IF G<>2 THEN 2750
2720 ? "YOU RAN INTO A STAR AND BURNED!"
2730 ? "YOUR NEXT OF KIN WILL BE NOTIFIED"
2740 END
2750 IF G<>3 THEN 2800
2770 ? "YOU RAMMED THE STARBASE!"
2780 ?:? "THOUSANDS ARE DEAD."
2790 ? N$;" WILL BE KNOWN AS A KILLER.":END
2800 ? "YOU RAMMED THE ENEMY SHIP"
2810 ? "IT WAS DESTROYED BUT SO WAS"
2820 ? "THE ENTERPRISE!":END
2900 NEXT I
2920 S((10*Y4+X4)-10)=1
2930 GOSUB 850
2940 GOSUB 4050
2950 RETURN
3000 REM PHASOR CONTROL
3010 IF E5<>0 THEN 3100
3020 ? "NO ENEMY TO LOCK PHASORS ONTO!":RETURN
3100 INPUT "AMOUNT OF ENERGY TO PHASORS";G
3110 IF G<E7 THEN 3140
3120 ? "YOU DON'T HAVE THAT MUCH ENERGY.":GOTO 3100
3130 E7=E7-G
3140 IF E5=5 THEN 3390
3150 R=INT(RND(0)*10)+1:IF R<>1 THEN 3300
3170 ? "PHASORS MISSED!":RETURN
3300 ? "KLINGON HIT WITH ";G;" PHASOR UNITS."
3310 E6=E6-G:IF E6>0 THEN 3380
3320 ? "*** KLINGON DESTROYED ***"
3330 G((10*Y1+X1)-10)=G((10*Y1+X1)-10)-100
3340 E1=E1-1:IF E1=0 THEN 4000
3350 E6=0:E5=0:FOR I=1 TO 100:IF S(I)=4 THEN S(I)=0
3360 IF S(I)=5 THEN S(I)=0
3370 NEXT I:GOSUB 850
3380 RETURN
3390 R=INT(RND(0)*5)+1:IF R>3 THEN 3410
3400 ? "ROMULAN SHIP AVOIDED PHASOR FIRE!":RETURN
3410 ? "ROMULAN HIT WITH ";G;" PHASOR UNITS."
3420 E6=E6-G:IF E6>0 THEN 3380
3430 ? "*** ROMULAN SHIP DESTROYED ***"
3440 G((10*Y1+X1)-10)=G((10*Y1+X1)-10)-100:E1=E1-1:IF E1=0 THEN 4000
3450 GOTO 3350
4000 FOR I=1 TO 24:?:NEXT I
4010 ? "YOU HAVE DEFENDED THE GALAXY AND DEFEATED"
4020 ? "ALL ENEMIES! YOU WILL BE PROMOTED TO"
4030 ? "ADMIRAL BEFORE BEING SUCKED OUT INTO"
4040 ? "SPACE IN STAR TREK GENERATIONS."
4050 REM CHECK IF DOCKED
4060 D9=0:X=X4-1:IF X<1 THEN X=10
4070 X9=X4+1:IF X9>10 THEN X9=1
4080 IF S((10*Y4+X)-10)=3 THEN 4120
4090 IF S((10*Y4+X9)-10)=3 THEN 4120
4100 RETURN
4120 IF S1=0 THEN 4140
4130 ? "YOU CAN'T DOCK WITH SHIELDS UP.":RETURN
4140 ? "YOU ARE DOCKED WITH THE STARBASE":D9=1
4150 ? "ENERGY RESTORED":E7=2000:T=10:RETURN
4200 REM PHOTON TORPEDO CONTROL
4300 IF T>0 THEN 4500
4400 ? "YOU DON'T HAVE ANY TORPEDOS.":RETURN
4500 GOSUB 7910:INPUT "DIRECTION";D
4600 IF D>0 AND D<9 THEN 4800
4700 ? "PLEASE CHOOSE BETWEEN 1-8":GOTO 4500
4800 X5=X4:Y5=Y4:T=T-1:?:? "TRACKING TORPEDO PATH":?
5000 ?TAB(10):? X5;",";Y5: IF D<>1 THEN 5500
5100 X5=X5+1:IF X5>10 THEN 6000
5300 Y5=Y5-1:IF Y5<1 THEN 6000
5500 IF D<>2 THEN 5560
5520 X5=X5+1:IF X5>10 THEN 6000
5560 IF D<>3 THEN 5680
5600 X5=X5+1:IF X5>10 THEN 6000
5640 Y5=Y5+1:IF Y5>10 THEN 6000
5680 IF D<>4 THEN 5720
5700 Y5=Y5+1:IF Y5>10 THEN 6000
5720 IF D<>5 THEN 5780
5740 X5=X5-1:IF X5<1 THEN 6000
5760 Y5=Y5+1:IF Y5>10 THEN 6000
5780 IF D<>6 THEN 5800
5790 X5=X5-1:IF X5<1 THEN 6000
5800 IF D<>7 THEN 5830
5810 X5=X5-1:IF X5<1 THEN 6000
5820 Y5=Y5-1:IF Y5<1 THEN 6000
5830 IF D<>8 THEN 5850
5840 Y5=Y5-1:IF Y5<1 THEN 6000
5850 V=S((10*Y5+X5)-10):IF V=0 THEN 5000
5860 IF V=2 THEN 6200
5870 IF V=3 THEN 6400
5880 IF V=4 THEN 6450
5890 IF V=5 THEN 6600
5900 GOTO 5000:REM CONTINUE UNTIL HIT SOMETHING OR LEAVE QUAD
6000 REM OUT OF QUADRANT
6100 ?:? "     *****  TORPEDO MISSED *****":?:RETURN
6200 REM HIT STAR
6300 ? "TORPEDO EXPLODED IN THE STAR":?:RETURN
6400 ? "     ***** STAR BASE DESTROYED *****":GOTO 2780
6450 ? "KLINGON HIT BY TORPEDO"
6460 IF INT(RND(0)*100)+1>98 THEN 6550
6470 ?:? "KLINGON DESTROYED"
6480 S((10*Y5+X5)-10)=0:G((10*Y1+X1)-10)=G((10*Y1+X1)-10)-100
6485 E1=E1-1:E5=0:E6=0:IF E1=0 THEN 4000
6490 ?:GOSUB 850
6500 RETURN
6550 ? "KLINGON SURVIVED IMPACT FROM TORPEDO":E6=E6/2:RETURN
6600 ? "ROMULAN HIT BY TORPEDO"
6610 IF INT(RND(0)*100)+1<50 THEN 6650
6620 ?:? "ROMULAN SHIP DESTROYED!":GOTO 6480
6650 ? "ROMULAN SHIELDS HOLDING":E6=E6/2:RETURN
7000 ?:? "SELF DESTRUCT SEQUENCE IS NOW ACTIVE"
7100 FOR X=10 TO 1 STEP -1
7200 ?TAB(19):? X:FOR Y=1 TO 1000:NEXT Y:NEXT X
7300 ?:?:? "      **** KA-BOOM!!! ****"
7400 ? "PIECES OF THE ENTERPRISE ARE NOW"
7500 ? "SPREAD ACROSS THE GALAXY"
7600 ? "YOUR NEXT OF KIN WILL BE NOTIFIED."
7700 END
7910 PRINT "  7  8  1"
7920 PRINT "   \ ^ /"
7930 PRINT "    \^/"
7940 PRINT " 6 ----- 2"
7950 PRINT "    /^\"
7960 PRINT "   / ^ \"
7970 PRINT "  5  4  3"
7980 RETURN
  

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎