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 >
Wrap
BASIC Source File
|
1984-04-29
|
5KB
|
213 lines
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