home *** CD-ROM | disk | FTP | other *** search
- 10 REMARK - STAR TREK BY DAN DRUID FOR BASIC-E
- 20 RANDOMIZE
- 90 DIM S(7,2)
- 110 FOR I = 1 TO 2
- 120 FOR J = 1 TO 6
- 130 LET S(J,I) = 1
- 140 NEXT J
- 150 LET S(7,I) = 0
- 160 NEXT I
- 170 REM GENERATE RANGE AND BEARING
- PRINT "STARTREK - VERSION 1.0"
- PRINT "COMMANDS ARE:"
- PRINT "1 = FIRE FORWARD PHASORS"
- PRINT "2 = FIRE REAR PHASORS"
- PRINT "3 = FIRE PHOTON TORPEDO"
- PRINT "4 = MANEUVER TO ATTACK"
- PRINT "5 = ATTEMPT TO BREAK CONTACT"
- PRINT "6 = SELF-DESTRUCT"
- PRINT "7 = SURRENDER"
- PRINT "GOOD LUCK"
- PRINT
- 180 PRINT "ENTER STAR DATE"
- 190 INPUT A
- 200 LET A2 = -ABS(A/1000)
- 205 RANDOMIZE
- 210 LET R = 10^7*RND
- 221 RANDOMIZE
- 220 LET B = 180*RND
- 230 LET I = 1
- 240 REMARK - ODD MOVES ARE THE ENTERPRISE, EVEN KLINGON
- 250 PRINT "KLINGON APPROACHING"
- 260 PRINT "RANGE = ";R;" KM, BEARING = ";B;" DEGREES."
- 270 INPUT "COMMAND";C
- 280 PRINT "WORKING"
- 290 PRINT C
- 300 I = 1
- 310 J = 2
- 320 H = 0
- 330 ON C GOSUB 790, 920, 1040, 1140, 1180, 1250, 1310
- 340 GOTO 1360
- 350 REMARK - KLINGON MOVE SELECTION
- 360 I = 2
- 370 REMARK - CHECK KLINGON PHASOR STATUS
- 380
- W = S(1,I)+S(2,I)
- 390 J = 1
- 400 IF S(3,I) = 1 AND R>3E+06 AND B<100 THEN 710
- 410 IF W>0 AND R<3E+06 THEN 540
- 420 IF W<>0 THEN 480
- 430 REMARK - ATTEMPT TO BREAK CONTACT
- 440 PRINT "KLINGON ATTEMPTS TO BREAK CONTACT"
- 450 C = 5
- 460 GOSUB 1180
- 470 GOTO 1920
- 480 PRINT "KLINGON MANEUVERING TO ATTACK"
- 490 C = 4
- 500 GOSUB 1140
- 510 B = 0
- 520 H = 0
- 530 GOTO 1920
- 540 PRINT "KLINGON FIRES PHASOR"
- 550 C = 1
- 560 IF B<90 THEN 640
- 570 IF S(2,I)=0 THEN 600
- 580 GOSUB 920
- 590 GOTO 1360
- 600 B = B-90
- 610 GOSUB 790
- 620 B = B+90
- 630 GOTO 1360
- 640 IF S(1,I) = 0 THEN 670
- 650 GOSUB 790
- 660 GOTO 1360
- 670 B = B+90
- 680 GOSUB 920
- 690 B = B-90
- 700 GOTO 1360
- 710 PRINT "KLINGON FIRES PHOTON TORPEDO"
- 720 C = 3
- 730 B2 = B : B = 40
- 750 GOSUB 1040
- 760 B = B2
- 770 GOTO 1360
- 780 REMARK - FIRE FORWARD PHASORS
- 790 H = 0
- 800 IF S(1,I) <> 0 THEN 830
- 810 PRINT "FORWARD PHASORS NOT OPERATIONAL"
- 820 IF I = 1 THEN 260
- 830 R1 = 1-.2*(R/1E+06)
- 840 B1 = (90-B)/90
- 850 IF B1 < 0 OR R > 5E+6 THEN 900
- 860 REMARK - GENERATE RND(0-1)
- 870 IF R1 < RND THEN 900
- 880 H = 1
- 890 P = 4
- 900 RETURN
- 910 REMARK - REAR PHASOR
- 920 IF S(2,I) <> 0 THEN 960
- 930 PRINT "REAR PHASORS NOT OPERATIONAL"
- 940 REMARK -
- 950 IF I = 1 THEN 260
- 960 H = 0
- 970 R1 =1-0.2*R*1E-06
- 980 REMARK - RANGE BEARING CHECK
- 990 IF R>5E+06 OR B<90 THEN 1030
- 1000 IF R1<RND THEN 1030
- 1010 H = 1
- 1020 P = 2
- 1030 RETURN
- 1040 H = 0
- 1050 IF S(3,I)<>0 THEN 1080
- 1060 PRINT "PHOTON TORPEDO NOT OPERATIONAL"
- 1070 IF I=1 THEN 260
- 1080 IF R<2E+06 OR B>90 THEN 1130
- 1090 R2 = (1-B/90)*(2*R/1E+08)
- 1100 IF R2 < RND THEN 1130
- 1110 H = 1
- 1120 P = 8
- 1130 RETURN
- 1140 R = R*(1-0.5*S(4,I))
- 1150 B = 0
- 1160 H = 0
- 1170 RETURN
- 1180 R = R*(1+S(4,I)+0.05*S(6,1))
- 1190 IF R>1E+08 THEN 1230
- 1200 PRINT "CONTACT NOT BROKEN"
- 1210 H = 0
- 1220 RETURN
- 1230 PRINT "CONTACT LOST"
- 1240 GOTO 10
- 1250 PRINT"SELF DESTRUCT ACTIVATED"
- 1260 FOR I=10 TO 1 STEP -1
- 1270 PRINT I
- 1280 NEXT I
- 1290 PRINT "BOOM"
- 1300 GOTO 10
- 1310 PRINT"MESSAGE FROM KLINGON*** I ACCEPT YOUR SURRENDER"
- 1320 PRINT "PREPARE TO BE BOARDED"
- 1330 PRINT "*** MESSAGE FROM STARFLEET COMMAND"
- 1340 PRINT "YOU COWARD"
- 1350 GOTO 10
- 1360 LET J=3-I
- 1370 IF C>3 THEN 1920
- 1380 REMARK - DAMAGE ASSESSMENT
- 1390 IF H<>0 THEN 1440
- 1400 PRINT "MISS"
- 1410 GOTO 1920
- 1420 REM
- 1430 REM
- 1440 PRINT "HIT"
- 1450 D = P*(S(5,J))
- 1460 IF D<=2 THEN 1480
- 1470 D = 2
- 1480 S(7,J) = S(7,J)+D
- 1490 S(5,J) = S(5,J)-P/100
- 1500 Z=10-INT(S(7,J))
- 1510 IF J=1 THEN 1580
- 1520 REMARK - DAMAGE DONE TO KLINGON
- 1530 PRINT"SCANNER REPORT ON KLINGON"
- 1540 IF Z>1 THEN 1610
- 1550 PRINT "KLINGON DESTROYED"
- 1560 GOTO 10
- 1570 REMARK
- 1580 PRINT "ENTERPRISE DAMAGE REPORT"
- 1590 IF Z>0 THEN 1610
- 1600 Z = 1
- 1610 ON Z GOTO 1620, 1640, 1850, 1730, 1730, 1780, 1780, 1780, 1830, 1830
- 1620 PRINT"ENTERPRISE DESTROYED"
- 1630 GOTO 10
- 1640 PRINT"WEAPON SYSTEMS DESTROYED"
- 1650 PRINT"WARP DRIVE DESTROYED"
- 1660 PRINT"MAJOR STRUCTURAL DAMAGE"
- 1670 PRINT"SHIELDS BUCKLING"
- 1680 S(1,J) = 0
- 1690 S(2,J) = 0
- 1700 S(3,J) = 0
- 1710 S(4,J) = 0
- 1720 GOTO 1920
- 1730 PRINT"PHASORS DESTROYED"
- 1740 PRINT"MINOR DAMAGE AMIDSHIPS"
- 1750 PRINT"SHIELDS WEAKENING"
- 1760 S(1,J)=0 : S(2,J) = 0
- 1770 GOTO 1920
- 1780 PRINT"FORWARD PHASORS DESTROYED"
- 1790 PRINT"MINOR DAMAGE AMIDSHIPS"
- 1800 PRINT"SHIELDS WEAKENING"
- 1810 S(1,J) = 0
- 1820 GOTO 1920
- 1830 PRINT"SHIELDS HOLDING -- NO DAMAGE"
- 1840 GOTO 1920
- 1850 PRINT"WEAPONS SYSTEMS DEACTIVATED"
- 1860 PRINT"DILITHIUM CRYSTALS OVERHEATING"
- 1870 S(1,J) = 0
- 1880 S(2,J) = 0
- 1890 S(3,J) = 0
- 1900 GOTO 1920
- 1910 REMARK - NEW RANGE AND BEARING
- 1905 ALPHA = .05*(S(6,1)+S(6,2))
- 1906 BETA = S(4,1)+S(4,2)
- 1920 R3 = .5*(BETA + ALPHA)
- 1925 RANDOMIZE
- 1930 R = R+R3*(RND-.5)*1E+06
- 1940 R=ABS(R)
- 1945 RANDOMIZE
- 1950 B=ABS(B-150+20*RND)
- 1960 IF B>180 THEN 2000
- 1970 I = J
- 1980 J = 3-I
- 1990 ON I GOTO 260, 360
- 2000 B = ABS(360-B)
- 2010 GOTO 1970
- 2020 END
-