mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-09-01 23:20:15 +00:00
816 lines
38 KiB
QBasic
816 lines
38 KiB
QBasic
'CONTROLS:
|
|
'ARROW KEYS - AIM UP/DOWN/LEFT/RIGHT
|
|
'SPACE - FIRE CANNON
|
|
'ENTER - FIRE TORPEDO
|
|
'1-9 - CHANGE ENGINE SPEED
|
|
'KEY OFF
|
|
DEFINT A-Z: DEFSNG G, J, O, S
|
|
CLS
|
|
SCREEN 0
|
|
WIDTH 40
|
|
PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"
|
|
PRINT "³ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿³"
|
|
PRINT "³³ ³³"
|
|
PRINT "³³ 2060-A.BAS ³³"
|
|
PRINT "³³ XWING ³³"
|
|
PRINT "³³ ³³"
|
|
PRINT "³³ BROUGHT TO YOU BY DATATECH ³³"
|
|
PRINT "³³ ³³"
|
|
PRINT "³³ MICHAEL KNOX WAUSAU WI 54403 ³³"
|
|
PRINT "³³ ³³"
|
|
PRINT "³³ ³³"
|
|
PRINT "³³ MODIFIED BY GALLEON TO ³³"
|
|
PRINT "³³ BE QBASIC COMPATIBLE ³³"
|
|
PRINT "³³ ³³"
|
|
PRINT "³³ ³³"
|
|
PRINT "³³ QB64 DEMO #5: X-WING FIGHTER ³³"
|
|
PRINT "³³ ³³"
|
|
PRINT "³³ ³³"
|
|
PRINT "³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³"
|
|
PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"
|
|
PRINT
|
|
PRINT " PRESS ANY KEY TO CONTINUE"
|
|
260 A$ = INKEY$: IF A$ = "" THEN 260
|
|
WIDTH 80
|
|
CLS
|
|
REM * STAR PILOT GAME *
|
|
REM * WRITTEN BY MICHAEL KNOX WAUSAU WI *
|
|
REM * FOR PUBLIC DOMAIN UNLESS MOVIEMAKERS OBJECT *
|
|
REM * VERSION 2.0 JANUARY 4, 1996 *
|
|
REM * PRODUCED BY WILD BOAR PRODUCTIONS *
|
|
REM * WILD BOAR PRODUCTIONS WAUSAU WI *
|
|
REM * JANUARY 1996 *
|
|
'KEY OFF
|
|
CLS : WIDTH 80: DEF SEG = 0: A = PEEK(&H410): POKE &H410, (A AND &HCF) OR &H20
|
|
WIDTH 40: SCREEN 1: SCREEN 0: WIDTH 80: WIDTH 40: SCREEN 1: COLOR 0, 1
|
|
GOTO 1200
|
|
1100 V = V - 1: IF V < -3 THEN V = -3
|
|
RETURN
|
|
1120 W = W - 1: IF W < -5 THEN W = -5
|
|
RETURN
|
|
1140 W = W + 1: IF W > 5 THEN W = 5
|
|
RETURN
|
|
1160 V = V + 1: IF V > 3 THEN V = 3
|
|
RETURN
|
|
1180 RETURN 'KEY(1) ON: KEY(2) ON: KEY(11) ON: KEY(12) ON: KEY(13) ON: KEY(14) ON: RETURN
|
|
1190 RETURN 'KEY(1) STOP: KEY(2) STOP: KEY(11) STOP: KEY(12) STOP: KEY(13) STOP: KEY(14) STOP: RETURN
|
|
1200 LOCATE 8, 1: PRINT "****************************************";
|
|
PRINT "* *";
|
|
PRINT "* X W I N G F I G H T E R *";
|
|
PRINT "* *";
|
|
PRINT "****************************************";
|
|
SOUND 525.25, 18.2: SOUND 783.99, 18.2 / 2: SOUND 698.46, 18.2 / 6: SOUND 659.26, 18.2 / 6: SOUND 587.33, 18.2 / 6: SOUND 1046.6, 18.2: SOUND 783.99, 18.2 / 2: SOUND 698.46, 18.2 / 6: SOUND 659.26, 18.2 / 6: SOUND 587.33, 18.2 / 6
|
|
SOUND 1046.5, 18.2: SOUND 783.99, 18.2 / 2: SOUND 698.46, 18.2 / 6: SOUND 659.26, 18.2 / 6: SOUND 698.46, 18.2 / 6: SOUND 587.33, 18.2
|
|
1270 LOCATE 16, 1: PRINT "DO YOU WANT INSTRUCTIONS (Y OR N)?";
|
|
K$ = INKEY$: IF K$ = "Y" OR K$ = "y" GOTO 6930
|
|
IF K$ <> "N" AND K$ <> "n" GOTO 1270
|
|
1300 CLS
|
|
IF RESTARTED% THEN END ELSE RESTARTED% = 1
|
|
RANDOMIZE (VAL(RIGHT$(TIME$, 2)))
|
|
'ON KEY(1) GOSUB 5350: ON KEY(2) GOSUB 5750: ON KEY(11) GOSUB 1100: ON KEY(12) GOSUB 1120: ON KEY(13) GOSUB 1140: ON KEY(14) GOSUB 1160
|
|
LOCATE 8, 1: PRINT "IMPERIAL FIGHTER: ": DRAW2$ = "C2;BM145,59;M+0,0;BM+10,1;M+0,-2;M+2,2;M+0,-2;BM+10,-1;M+0,4;BM+6,-4;M+0,4;M+0,-2;M-6,0": GOSUB DRAW2
|
|
DIM IM(6): DIM IM1(6): DIM IM2(6): DIM IM3(6): GET (145, 59)-(145, 59), IM: GET (145, 59)-(145, 59), IM1: GET (155, 58)-(157, 60), IM2: GET (167, 57)-(173, 61), IM3
|
|
DIM IM4(13): IM4(0) = 22: IM4(1) = 7: IM4(2) = 128: IM4(3) = -32760: IM4(4) = 2048: IM4(5) = 128: IM4(6) = -22008: IM4(7) = -22358: IM4(8) = 128: IM4(9) = -32760: IM4(10) = 2048: IM4(11) = 128: IM4(12) = 8
|
|
DIM IM5(20): IM5(0) = 26: IM5(1) = 9: IM5(2) = 128: IM5(3) = -32768!: IM5(4) = 128: IM5(5) = -32768!: IM5(6) = 128: IM5(7) = -32768!: IM5(8) = 128: IM5(9) = -32768!: IM5(10) = -21846: IM5(11) = -32598: IM5(12) = 128
|
|
IM5(13) = -32768!: IM5(14) = 128: IM5(15) = -32768!: IM5(16) = 128: IM5(17) = -32768!: IM5(18) = 128: IM5(19) = -32768!
|
|
DIM IM6(44): IM6(0) = 34: IM6(1) = 17: IM6(2) = 2048: IM6(5) = 32: IM6(7) = -32768!: IM6(9) = 512: IM6(12) = -32760: IM6(14) = 8192: IM6(15) = 32: IM6(17) = 2176: IM6(20) = 2: IM6(23) = 128: IM6(25) = 8192: IM6(28) = 8
|
|
IM6(29) = 128: IM6(30) = 512: IM6(31) = 2: IM6(33) = -30720: IM6(36) = 32: IM6(38) = -32768!: IM6(40) = 512: IM6(43) = 8
|
|
DIM IM7(44)
|
|
IM7(0) = 30: IM7(1) = 21: IM7(2) = -22006: IM7(3) = -22358: IM7(4) = 32: IM7(5) = 8192: IM7(6) = -21846: IM7(7) = -32598: IM7(8) = 2048: IM7(9) = 128
|
|
IM7(10) = 2048: IM7(11) = 128: IM7(12) = 2048: IM7(13) = 128: IM7(14) = 2048: IM7(15) = 128: IM7(16) = 2048: IM7(17) = 128: IM7(18) = 2048: IM7(19) = 128
|
|
IM7(20) = 2560: IM7(21) = 32: IM7(22) = 2048: IM7(23) = 128: IM7(24) = 8704: IM7(25) = 128: IM7(26) = 2048: IM7(27) = 128: IM7(28) = 2048: IM7(29) = 128
|
|
IM7(30) = 2048: IM7(31) = 128: IM7(32) = 2048: IM7(33) = 128: IM7(34) = 2048: IM7(35) = 128: IM7(36) = 2048: IM7(37) = 128: IM7(38) = -22518: IM7(39) = -22358
|
|
IM7(40) = 2592: IM7(41) = 8192: IM7(42) = -21846: IM7(43) = -32598
|
|
DIM IM8(102)
|
|
IM8(0) = 50: IM8(1) = 29: IM8(3) = 2048: IM8(7) = 10: IM8(10) = 2048: IM8(11) = 128: IM8(14) = 8200: IM8(17) = 2048: IM8(18) = 8: IM8(21) = 514
|
|
IM8(25) = -32640: IM8(28) = 8192: IM8(29) = 32: IM8(32) = 2184: IM8(35) = 514: IM8(36) = 2: IM8(38) = 2048: IM8(39) = -32760: IM8(40) = 128: IM8(42) = 8352
|
|
IM8(43) = -32736: IM8(45) = 8194: IM8(46) = 2176: IM8(47) = 128: IM8(48) = 512: IM8(49) = 34: IM8(50) = -32766: IM8(51) = 128: IM8(52) = 10250: IM8(54) = -24448
|
|
IM8(55) = 8704: IM8(56) = 32: IM8(58) = 136: IM8(59) = -24446: IM8(61) = -32256: IM8(62) = 514: IM8(63) = 128: IM8(65) = -30592: IM8(66) = 8: IM8(68) = 8192
|
|
IM8(69) = 8224: IM8(72) = 8200: IM8(73) = 128: IM8(75) = 512: IM8(76) = 34: IM8(79) = -22528: IM8(80) = 128: IM8(83) = 8224: IM8(86) = 2048: IM8(87) = 8
|
|
IM8(90) = 2050: IM8(94) = 136: IM8(97) = 10240: IM8(101) = 8
|
|
LOCATE 10, 1: PRINT "DARTH VADER : ": DRAW2$ = "C2;BM145,75;M+0,0;BM+10,1;M+0,-2;M+2,2;M+0,-2;BM+11,-1;M-1,1;M+0,2;M+1,1;BM+4,-4;M+1,1;M+0,2;M-1,1;BM+1,-2;M-6,0": GOSUB DRAW2
|
|
DIM DV(6): DIM DV1(6): DIM DV2(6): DIM DV3(6): GET (145, 75)-(145, 75), DV: GET (145, 75)-(145, 75), DV1: GET (155, 74)-(157, 76), DV2: GET (167, 73)-(173, 77), DV3
|
|
DIM DV4(13)
|
|
DV4(0) = 22: DV4(1) = 7: DV4(2) = 8: DV4(3) = 8320: DV4(4) = 8192: DV4(5) = 128: DV4(6) = -22008: DV4(7) = -22358: DV4(8) = 128: DV4(9) = 8200
|
|
DV4(10) = 8192: DV4(11) = 8: DV4(12) = 128
|
|
DIM DV5(20)
|
|
DV5(0) = 26: DV5(1) = 9: DV5(2) = 8: DV5(3) = 8: DV5(4) = 32: DV5(5) = 2: DV5(6) = 128: DV5(7) = -32768!: DV5(8) = 128: DV5(9) = -32768!
|
|
DV5(10) = -21846: DV5(11) = -32598: DV5(12) = 128: DV5(13) = -32768!: DV5(14) = 128: DV5(15) = -32768!: DV5(16) = 32: DV5(17) = 2: DV5(18) = 8: DV5(19) = 8
|
|
DIM DV6(32)
|
|
DV6(0) = 30: DV6(1) = 15: DV6(2) = -22528: DV6(4) = 2: DV6(6) = 8: DV6(8) = 34: DV6(10) = -32640: DV6(12) = 8320: DV6(14) = 2176: DV6(16) = 512
|
|
DV6(19) = 2176: DV6(21) = 2080: DV6(23) = 2056: DV6(25) = 8194: DV6(27) = -32768!: DV6(29) = 2: DV6(31) = 168
|
|
DIM DV7(44)
|
|
DV7(0) = 32: DV7(1) = 21: DV7(2) = 10752: DV7(3) = -24406: DV7(4) = -32768!: DV7(5) = -30720: DV7(6) = -22014: DV7(7) = 682: DV7(8) = 520: DV7(9) = -30688
|
|
DV7(10) = 544: DV7(11) = 8224: DV7(12) = 512: DV7(13) = 32: DV7(14) = 512: DV7(15) = 32: DV7(16) = 512: DV7(17) = 32: DV7(18) = 512: DV7(19) = 32
|
|
DV7(20) = 512: DV7(21) = 136: DV7(22) = 512: DV7(23) = 32: DV7(24) = 2048: DV7(25) = 160: DV7(26) = 512: DV7(27) = 32: DV7(28) = 512: DV7(29) = 32
|
|
DV7(30) = 512: DV7(31) = 32: DV7(32) = 512: DV7(33) = 32: DV7(34) = 520: DV7(35) = 544: DV7(36) = 546: DV7(37) = 2080: DV7(38) = -21888: DV7(39) = -24534
|
|
DV7(40) = 546: DV7(41) = -32640: DV7(42) = -22006: DV7(43) = 170
|
|
DIM DV8(76)
|
|
DV8(0) = 46: DV8(1) = 25: DV8(3) = 10752: DV8(4) = 128: DV8(6) = -32768!: DV8(7) = 32: DV8(9) = -22526: DV8(10) = 8: DV8(12) = 512: DV8(13) = 2
|
|
DV8(16) = -32640: DV8(18) = 512: DV8(19) = 8224: DV8(21) = 2048: DV8(22) = 2056: DV8(24) = 8192: DV8(25) = 2082: DV8(27) = -32766: DV8(28) = -30592: DV8(30) = -32248
|
|
DV8(31) = 10240: DV8(32) = 128: DV8(33) = -30712: DV8(34) = 2048: DV8(35) = 128: DV8(36) = -24536: DV8(37) = 2048: DV8(38) = 128: DV8(39) = -32630: DV8(40) = 2048
|
|
DV8(41) = 672: DV8(42) = -32760: DV8(44) = 2184: DV8(45) = 10: DV8(47) = 8322: DV8(48) = 32: DV8(50) = -32640: DV8(51) = 128: DV8(53) = -32224: DV8(56) = -30712
|
|
DV8(59) = -24062: DV8(62) = -32768!: DV8(63) = 168: DV8(65) = 8192: DV8(66) = 136: DV8(68) = 2048: DV8(69) = 136: DV8(71) = 512: DV8(72) = 136: DV8(75) = 168
|
|
LOCATE 12, 1: PRINT "DEATH STAR : ": DRAW2$ = "C3;BM145,91;M+0,0;BM+11,-1;M-1,1;M+2,0;M-1,1;BM+12,-3;M+1,0;M+1,1;M-3,0;M+0,1;M+3,0;M-1,1;M-1,0": GOSUB DRAW2
|
|
DRAW2$ = "C3;BM+12,-5;M+2,0;M+1,1;M-4,0;M-1,1;M+6,0;M+0,1;M-6,0;M+0,1;M+6,0;M-1,1;M-4,0;M+1,1;M+2,0": GOSUB DRAW2
|
|
DIM DS(8): DIM DS1(8): DIM DS2(8): DIM DS3(8): DIM DS4(8): GET (145, 91)-(145, 91), DS: GET (145, 91)-(145, 91), DS1: GET (155, 90)-(157, 92), DS2: GET (167, 89)-(170, 92), DS3: GET (178, 87)-(184, 93), DS4
|
|
DIM EXPL3(18): DIM EXPL4(18): DIM EXPL5(18): DIM EXPL6(18): DIM EXPL7(18): DIM EXPL8(18)
|
|
DATA 22,11,0,0,0,8194,0,-32608,-22006,2560,-32598,-22006,128,168,8706,0,0,0,0
|
|
FOR i = 0 TO 18: READ EXPL3(i): NEXT i
|
|
DATA 22,11,-30720,2048,136,-30718,-24544,-32608,-22006,-21848,-22358,-22006,-23936,10274,-30206,2048,-32632,-30720,0
|
|
FOR i = 0 TO 18: READ EXPL4(i): NEXT i
|
|
DATA 22,11,-30712,512,136,8194,-32760,-24416,-21974,-21976,-22358,-21974,-32608,2216,-30206,512,138,-30712,128
|
|
FOR i = 0 TO 18: READ EXPL5(i): NEXT i
|
|
DATA 22,11,-30712,2048,136,8194,-24536,-32608,-22006,-21976,-22358,-22006,-24448,10408,8706,2048,-32632,-30712,128
|
|
FOR i = 0 TO 18: READ EXPL6(i): NEXT i
|
|
DATA 22,11,-30688,2048,2080,8194,-32736,-32608,-21974,-22008,-22358,-22006,-24448,10408,8706,2048,-32632,-30688,32
|
|
FOR i = 0 TO 18: READ EXPL7(i): NEXT i
|
|
DATA 22,11,-30688,2048,2184,-30718,-24544,-32608,-22006,-21848,-22358,-22006,-23936,10274,-30206,2048,-32632,-30688,32
|
|
FOR i = 0 TO 18: READ EXPL8(i): NEXT i
|
|
1920 LOCATE 17, 1: PRINT "SELECT SKILL LEVEL FROM 0 TO 3"
|
|
S$ = INKEY$: IF S$ <> "0" AND S$ <> "1" AND S$ <> "2" AND S$ <> "3" GOTO 1920
|
|
SKILL = VAL(S$): CLS
|
|
DIM LASAR(381)
|
|
LASAR(0) = 148: LASAR(1) = 40: LASAR(2) = 64: LASAR(11) = 5136: LASAR(20) = 16385: LASAR(21) = 16385: LASAR(29) = 5120: LASAR(31) = 20: LASAR(38) = 256: LASAR(39) = 64: LASAR(40) = 256: LASAR(41) = 64: LASAR(48) = 20
|
|
LASAR(50) = 5120: LASAR(57) = 16385: LASAR(60) = 16385: LASAR(66) = 5120: LASAR(70) = 20: LASAR(75) = 256: LASAR(76) = 64: LASAR(79) = 256: LASAR(85) = 4: LASAR(89) = 20480: LASAR(94) = 20480: LASAR(99) = 5
|
|
LASAR(103) = 1280: LASAR(109) = 80: LASAR(113) = 80: LASAR(118) = 1280: LASAR(122) = 5: LASAR(128) = 20480: LASAR(131) = 20480: LASAR(138) = 5: LASAR(140) = 1280: LASAR(148) = 80: LASAR(150) = 80
|
|
LASAR(157) = 1024: LASAR(159) = 1: LASAR(167) = 16385: LASAR(168) = 5120: LASAR(177) = 276: LASAR(178) = 64: LASAR(186) = 256: LASAR(187) = 84: LASAR(196) = 21505: LASAR(205) = 5120: LASAR(206) = 16385
|
|
LASAR(214) = 256: LASAR(215) = 64: LASAR(216) = 20: LASAR(224) = 4: LASAR(225) = 256: LASAR(233) = 20480: LASAR(235) = 20480: LASAR(242) = 1280: LASAR(245) = 5: LASAR(252) = 80: LASAR(255) = 80
|
|
LASAR(261) = 5: LASAR(264) = 1280: LASAR(270) = 20480: LASAR(274) = 20480: LASAR(279) = 1280: LASAR(284) = 5: LASAR(289) = 80: LASAR(294) = 80: LASAR(298) = 1: LASAR(303) = 1024: LASAR(307) = 5120
|
|
LASAR(313) = 16385: LASAR(316) = 256: LASAR(317) = 64: LASAR(323) = 20: LASAR(326) = 20: LASAR(332) = 256: LASAR(333) = 64: LASAR(335) = 16385: LASAR(342) = 5120: LASAR(344) = 5120: LASAR(352) = 16385
|
|
LASAR(353) = 256: LASAR(354) = 64: LASAR(362) = 20: LASAR(363) = 20: LASAR(371) = 256: LASAR(372) = 16448: LASAR(381) = 4096
|
|
REM * INITIALIZE VARIABLES *
|
|
M = INT(RND * 61) + 10: N = INT(RND * 21) + 10: O = INT(RND * 32001) + 70000!
|
|
E = INT(RND * 61) + 10: F = INT(RND * 21) + 10: G = 25000
|
|
H = INT(RND * 61) + 10: i = INT(RND * 21) + 10: J = INT(RND * 32001) + 40000!
|
|
Q = 5: Z = 3
|
|
IMX = 38: IMY = 21: IMR1 = 1: IMR2 = 1
|
|
DVX = 38: DVY = 21: DVR1 = 1: DVR2 = 1
|
|
IF SKILL = 0 THEN A1 = 5: A2 = 0: BYPASS = 3
|
|
IF SKILL = 1 THEN A1 = 3: A2 = 0: BYPASS = 2
|
|
IF SKILL = 2 THEN A1 = 2: A2 = 45: BYPASS = 1
|
|
IF SKILL = 3 THEN A1 = 2: A2 = 30
|
|
K$ = "5"
|
|
LINE (1, 1)-(76, 42), 3, B
|
|
DRAW2$ = "C3;BM2,21;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+12,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0": GOSUB DRAW2
|
|
DRAW2$ = "C3;BM38,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,6;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0": GOSUB DRAW2
|
|
LOCATE 8, 1: PRINT "REPUBLIC X-WING STAR FIGHTER"
|
|
LOCATE 10, 5: PRINT "TORPEDOES"
|
|
LOCATE 12, 1: PRINT "HOR. VERT. DIRECTION"
|
|
LOCATE 15, 1: PRINT "SPEED MACH"
|
|
LOCATE 17, 1: PRINT "RADAR TARGETS"
|
|
LOCATE 18, 8: PRINT "KM TO IMPERIAL FIGHTER"
|
|
LOCATE 19, 8: PRINT "KM TO DARTH VADER"
|
|
LOCATE 20, 8: PRINT "KM TO DEATH STAR"
|
|
LOCATE 22, 1: PRINT "TIME REMAINING"
|
|
'PLAY "T250"
|
|
SEC1 = VAL(RIGHT$(TIME$, 2))
|
|
GOSUB 1180
|
|
REM * MASTER CONTROL ROUTINE *
|
|
2320 GOSUB 1190
|
|
PUT (38, 21), DS1
|
|
LOCATE 10, 1: PRINT Z
|
|
LOCATE 13, 1: PRINT W; " "; -V
|
|
LOCATE 15, 12: PRINT Q * 10
|
|
GS = G - S: IF GS < 0 THEN GS = 0
|
|
LOCATE 18, 1: PRINT GS
|
|
JS = J - S: IF JS < 0 THEN JS = 0
|
|
LOCATE 19, 1: PRINT JS
|
|
OS = O - S: IF OS < 0 THEN OS = 0
|
|
LOCATE 20, 1: PRINT OS
|
|
LOCATE 22, 16: PRINT A1; ":"; A2NEW
|
|
SOUND 37 * Q, 1
|
|
PUT (38, 21), DS1
|
|
GOSUB 1180
|
|
REM * DISPLAY DEATH STAR *
|
|
IF O - S = 30000 OR O - S > 30000 GOTO 2840
|
|
IF O - S < 20000 AND DSTAR2 = 0 THEN DSTAR2 = 1: DSFLAG = 1: DS(0) = DS2(0): DS(1) = DS2(1): DS(2) = DS2(2): DS(3) = DS2(3)
|
|
IF O - S < 10000 AND DSTAR3 = 0 THEN DSTAR3 = 1: DSFLAG = 2: DS(0) = DS3(0): DS(1) = DS3(1): DS(2) = DS3(2): DS(3) = DS3(3)
|
|
IF O - S < 5000 AND DSTAR4 = 0 THEN DSTAR4 = 1: DSFLAG = 3: DS(0) = DS4(0): DS(1) = DS4(1): DS(2) = DS4(2): DS(3) = DS4(3): DS(4) = DS4(4): DS(5) = DS4(5): DS(6) = DS4(6): DS(7) = DS4(7): DS(8) = DS4(8)
|
|
IF FLAG1 <> BYPASS THEN FLAG1 = FLAG1 + 1: GOTO 2550
|
|
FLAG1 = 0
|
|
M = M + INT(RND * 5) - 2: N = N + INT(RND * 5) - 2
|
|
2550 M = M - W: N = N - V
|
|
IF M < 2 THEN M = 2 + INT(RND * 3)
|
|
IF M > 69 THEN M = 69 - INT(RND * 3)
|
|
IF N < 2 THEN N = 2 + INT(RND * 3)
|
|
IF N > 35 THEN N = 35 - INT(RND * 3)
|
|
GOSUB 1190
|
|
PUT (M, N), DS
|
|
IF DSNEW = 0 THEN DSNEW = 1: GOTO 2680
|
|
IF DSFLAG = 0 GOTO 2670
|
|
IF DSFLAG = 1 THEN DSFLAG = 0: PUT (MP, NP), DS1: GOTO 2680
|
|
IF DSFLAG = 2 THEN DSFLAG = 0: PUT (MP, NP), DS2: GOTO 2680
|
|
IF DSFLAG = 3 THEN DSFLAG = 0: PUT (MP, NP), DS3: GOTO 2680
|
|
2670 PUT (MP, NP), DS
|
|
2680 GOSUB 1180
|
|
MP = M: NP = N
|
|
IF O - S > 10000 OR FLAG = 1 GOTO 2840
|
|
GOSUB 1190
|
|
FOR K = 1 TO 2
|
|
LOCATE 24, 1: PRINT "*** DEATH STAR WITHIN TORPEDO RANGE ***";
|
|
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
|
NEXT K
|
|
LOCATE 24, 1: PRINT "*** DEATH STAR WITHIN TORPEDO RANGE ***";
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
GOSUB 1180
|
|
FLAG = 1
|
|
REM * DISPLAY IMPERIAL FIGHTER *
|
|
2840 GOSUB 1190
|
|
IF G - S > 26000 THEN GOSUB 1180: GOTO 3910
|
|
IF G - S < 20000 AND IMPFIGH2 = 0 THEN IMPFIGH2 = 1: IMFLAG = 1: IM(0) = IM2(0): IM(1) = IM2(1): IM(2) = IM2(2): IM(3) = IM2(3): IMX = 37: IMY = 20: IMR1 = 2: IMR2 = 2
|
|
IF G - S < 10000 AND IMPFIGH3 = 0 THEN IMPFIGH3 = 1: IMFLAG = 2: IM(0) = IM3(0): IM(1) = IM3(1): IM(2) = IM3(2): IM(3) = IM3(3): IM(4) = IM3(4): IM(5) = IM3(5): IM(6) = IM3(6): IMX = 35: IMY = 19: IMR1 = 4: IMR2 = 3
|
|
IF FLAG2 <> BYPASS THEN FLAG2 = FLAG2 + 1: GOTO 2910
|
|
FLAG2 = 0
|
|
E = E + INT(RND * 5) - 2: F = F + INT(RND * 5) - 2
|
|
2910 E = E - W: F = F - V
|
|
IF E < 2 THEN E = 2 + INT(RND * 3)
|
|
IF E > 69 THEN E = 69 - INT(RND * 3)
|
|
IF F < 2 THEN F = 2 + INT(RND * 3)
|
|
IF F > 37 THEN F = 37 - INT(RND * 3)
|
|
PUT (E, F), IM
|
|
IF IMNEW = 0 THEN IMNEW = 1: GOTO 3020
|
|
IF IMFLAG = 0 GOTO 3010
|
|
IF IMFLAG = 1 THEN IMFLAG = 0: PUT (EP, FP), IM1: GOTO 3020
|
|
IF IMFLAG = 2 THEN IMFLAG = 0: PUT (EP, FP), IM2: GOTO 3020
|
|
3010 PUT (EP, FP), IM
|
|
3020 GOSUB 1180
|
|
EP = E: FP = F
|
|
IF G - S > 5000 OR FLAG3 = 1 GOTO 3170
|
|
GOSUB 1190
|
|
FOR K = 1 TO 2
|
|
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER ATTACKS ****";
|
|
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
|
NEXT K
|
|
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER ATTACKS ****";
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
GOSUB 1180
|
|
FLAG3 = 1
|
|
3170 IF G > S THEN GOTO 3910
|
|
REM * IMPERIAL FIGHTER ATTACKS *
|
|
FLAG3 = 0: IMNEW = 0: IMNEW1 = 0: IMPFIGH2 = 0: IMPFIGH3 = 0: PUT (E, F), IM
|
|
GOSUB 1190
|
|
3210 DELTAX = 29 - E: DELTAY = 19 - F
|
|
IF DELTAX > 0 THEN E = E + 1
|
|
IF DELTAX < 0 THEN E = E - 1
|
|
IF DELTAY > 0 THEN F = F + 1
|
|
IF DELTAY < 0 THEN F = F - 1
|
|
IF DELTAX = 0 AND DELTAY = 0 GOTO 3320
|
|
PUT (E, F), IM: IF IMNEW1 = 0 THEN IMNEW1 = 1: GOTO 3290
|
|
PUT (EP, FP), IM
|
|
3290 EP = E: FP = F
|
|
DELAYPERIOD% = 32: GOSUB DELAY 'PLAY "P32"
|
|
GOTO 3210
|
|
3320 PUT (EP - 4, FP - 1), IM4
|
|
PUT (EP, FP), IM
|
|
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
|
PUT (EP - 9, FP - 2), IM5
|
|
PUT (EP - 4, FP - 1), IM4
|
|
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
|
PUT (EP - 12, FP - 6), IM6
|
|
PUT (EP - 9, FP - 2), IM5
|
|
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
|
PUT (EP - 9, FP - 7), IM7
|
|
PUT (EP - 12, FP - 6), IM6
|
|
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
|
PUT (EP - 20, FP - 14), IM8
|
|
PUT (EP - 9, FP - 7), IM7
|
|
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
|
PUT (EP - 20, FP - 14), IM8
|
|
FOR J2 = 10000 TO 100 STEP -500
|
|
SOUND J2, .001 * 18.2
|
|
NEXT J2
|
|
FOR A = 1 TO 50: NEXT A
|
|
FOR J2 = 10000 TO 100 STEP -500
|
|
SOUND J2, .001 * 18.2
|
|
NEXT J2
|
|
G = G + 25000
|
|
E = INT(RND * 61) + 10: F = INT(RND * 21) + 10
|
|
K = INT(RND * 10)
|
|
IF K > SKILL THEN 3790
|
|
'KEY(1) OFF: KEY(2) OFF: KEY(11) OFF: KEY(12) OFF: KEY(13) OFF: KEY(14) OFF
|
|
3600 CLS
|
|
PRINT "BLAM!"
|
|
FOR J2 = 1000 TO 37 STEP -10
|
|
SOUND J2, .01 * 18.2
|
|
NEXT J2
|
|
PRINT
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
|
PRINT "YOU HAVE JUST BEEN SHOT DOWN BY AN";
|
|
PRINT "IMPERIAL SKY FIGHTER!"
|
|
PRINT
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
|
PRINT "YOU ARE A HERO!"
|
|
PRINT
|
|
PRINT "UNFORTUNATELY, YOU ARE A DEAD HERO AND";
|
|
PRINT "DEAD HEROES DON'T WIN WARS. DARTH VADER";
|
|
PRINT "WINS!"
|
|
PRINT
|
|
PRINT "********* YOU LOSE!! *********"
|
|
GOTO 5310
|
|
3790 FOR K = 1 TO 2
|
|
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER MISSED ****";
|
|
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
|
NEXT K
|
|
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER MISSED ****";
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
IM(0) = IM1(0): IM(1) = IM1(1): IM(2) = IM1(2): IM(3) = IM1(3): IM(4) = IM1(4): IM(5) = IM1(5): IM(6) = IM1(6)
|
|
GOSUB 1180
|
|
REM * DISPLAY DARTH VADER *
|
|
3910 GOSUB 1190
|
|
IF J - S > 26000 THEN GOSUB 1180: GOTO 5140
|
|
IF J - S < 20000 AND DVADER2 = 0 THEN DVADER2 = 1: DVFLAG = 1: DV(0) = DV2(0): DV(1) = DV2(1): DV(2) = DV2(2): DV(3) = DV2(3): DVX = 37: DVY = 20: DVR1 = 2: DVR2 = 2
|
|
IF J - S < 10000 AND DVADER3 = 0 THEN DVADER3 = 1: DVFLAG = 2: DV(0) = DV3(0): DV(1) = DV3(1): DV(2) = DV3(2): DV(3) = DV3(3): DV(4) = DV3(4): DV(5) = DV3(5): DV(6) = DV3(6): DVX = 35: DVY = 19: DVR1 = 4: DVR2 = 3
|
|
IF FLAG2 <> BYPASS THEN FLAG2 = FLAG2 + 1: GOTO 3980
|
|
FLAG2 = 0
|
|
H = H + INT(RND * 5) - 2: i = i + INT(RND * 5) - 2
|
|
3980 H = H - W: i = i - V
|
|
IF H < 2 THEN H = 2 + INT(RND * 3)
|
|
IF H > 69 THEN H = 69 - INT(RND * 3)
|
|
IF i < 2 THEN i = 2 + INT(RND * 3)
|
|
IF i > 37 THEN i = 37 - INT(RND * 3)
|
|
PUT (H, i), DV
|
|
IF DVNEW = 0 THEN DVNEW = 1: GOTO 4090
|
|
IF DVFLAG = 0 GOTO 4080
|
|
IF DVFLAG = 1 THEN DVFLAG = 0: PUT (HP, IP), DV1: GOTO 4090
|
|
IF DVFLAG = 2 THEN DVFLAG = 0: PUT (HP, IP), DV2: GOTO 4090
|
|
4080 PUT (HP, IP), DV
|
|
4090 GOSUB 1180
|
|
HP = H: IP = i
|
|
IF J - S > 5000 OR FLAG4 = 1 GOTO 4350
|
|
GOSUB 1190
|
|
IF DVGONE = 0 GOTO 4240
|
|
FOR K = 1 TO 2
|
|
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER ATTACKS ****";
|
|
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
|
NEXT K
|
|
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER ATTACKS ****";
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
GOTO 4330
|
|
4240 FOR K = 1 TO 2
|
|
LOCATE 24, 1: PRINT "**** DARTH VADER ATTACKS ****";
|
|
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
|
NEXT K
|
|
LOCATE 24, 1: PRINT "**** DARTH VADER ATTACKS ****";
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
4330 FLAG4 = 1
|
|
GOSUB 1180
|
|
4350 IF J > S THEN GOTO 5140
|
|
REM * DARTH VADER ATTACKS *
|
|
FLAG4 = 0: DVNEW = 0: DVNEW1 = 0: DVADER2 = 0: DVADER3 = 0: PUT (H, i), DV
|
|
GOSUB 1190
|
|
4390 DELTAX = 41 - H: DELTAY = 19 - i
|
|
IF DELTAX > 0 THEN H = H + 1
|
|
IF DELTAX < 0 THEN H = H - 1
|
|
IF DELTAY > 0 THEN i = i + 1
|
|
IF DELTAY < 0 THEN i = i - 1
|
|
IF DELTAX = 0 AND DELTAY = 0 GOTO 4500
|
|
PUT (H, i), DV: IF DVNEW1 = 0 THEN DVNEW1 = 1: GOTO 4470
|
|
PUT (HP, IP), DV
|
|
4470 HP = H: IP = i
|
|
DELAYPERIOD% = 32: GOSUB DELAY 'PLAY "P32"
|
|
GOTO 4390
|
|
4500 IF DVGONE = 0 THEN PUT (HP, IP - 1), DV4 ELSE PUT (HP, IP - 1), IM4
|
|
PUT (HP, IP), DV
|
|
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
|
IF DVGONE = 0 THEN PUT (HP + 3, IP - 2), DV5 ELSE PUT (HP + 3, IP - 2), IM5
|
|
IF DVGONE = 0 THEN PUT (HP, IP - 1), DV4 ELSE PUT (HP, IP - 1), IM4
|
|
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
|
IF DVGONE = 0 THEN PUT (HP + 2, IP - 6), DV6 ELSE PUT (HP + 2, IP - 6), IM6
|
|
IF DVGONE = 0 THEN PUT (HP + 3, IP - 2), DV5 ELSE PUT (HP + 3, IP - 2), IM5
|
|
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
|
IF DVGONE = 0 THEN PUT (HP + 1, IP - 6), DV7 ELSE PUT (HP + 1, IP - 6), IM7
|
|
IF DVGONE = 0 THEN PUT (HP + 2, IP - 6), DV6 ELSE PUT (HP + 2, IP - 6), IM6
|
|
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
|
IF DVGONE = 0 THEN PUT (HP + 2, IP - 6), DV8 ELSE PUT (HP + 2, IP - 6), IM8
|
|
IF DVGONE = 0 THEN PUT (HP + 1, IP - 6), DV7 ELSE PUT (HP + 1, IP - 6), IM7
|
|
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
|
IF DVGONE = 0 THEN PUT (HP + 2, IP - 6), DV8 ELSE PUT (HP + 2, IP - 6), IM8
|
|
FOR J2 = 10000 TO 100 STEP -500
|
|
SOUND J2, .001 * 18.2
|
|
NEXT J2
|
|
FOR A = 1 TO 50: NEXT A
|
|
FOR J2 = 10000 TO 100 STEP -500
|
|
SOUND J2, .001 * 18.2
|
|
NEXT J2
|
|
J = J + 25000
|
|
H = INT(RND * 61) + 10: i = INT(RND * 21) + 10
|
|
K = INT(RND * 10)
|
|
IF K > SKILL + 1 THEN 4910
|
|
'KEY(1) OFF: KEY(2) OFF: KEY(11) OFF: KEY(12) OFF: KEY(13) OFF: KEY(14) OFF
|
|
4780 CLS : PRINT "**** B O O M ! ****"
|
|
FOR J2 = 1000 TO 37 STEP -10
|
|
SOUND J2, .01 * 18.2
|
|
NEXT J2
|
|
PRINT
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
|
IF DVGONE = 1 THEN PRINT "TOO BAD. YOU HAVE BEEN SHOT DOWN.": GOTO 4880
|
|
PRINT "YOU HAVE JUST BEEN PERSONALLY SHOT DOWN";
|
|
PRINT "BY DARTH VADER. THE FORCE WAS NOT WITH";
|
|
PRINT "YOU."
|
|
4880 PRINT
|
|
PRINT "********* YOU LOSE!! *********"
|
|
GOTO 5310
|
|
4910 IF DVGONE = 0 GOTO 5030
|
|
FOR K = 1 TO 2
|
|
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER MISSED ****";
|
|
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
|
NEXT K
|
|
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER MISSED ****";
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
DV(0) = DV1(0): DV(1) = DV1(1): DV(2) = DV1(2): DV(3) = DV1(3)
|
|
GOTO 5140
|
|
5030 FOR K = 1 TO 2
|
|
LOCATE 24, 1: PRINT "**** DARTH VADER MISSED ****";
|
|
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
|
NEXT K
|
|
LOCATE 24, 1: PRINT "**** DARTH VADER MISSED ****";
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
DV(0) = DV1(0): DV(1) = DV1(1): DV(2) = DV1(2): DV(3) = DV1(3): DV(4) = DV1(4): DV(5) = DV1(5): DV(6) = DV1(6)
|
|
REM * X - WING FIGHTER ROUTINE *
|
|
5140 GOSUB 1180
|
|
Z$ = INKEY$
|
|
|
|
IF LEN(Z$) = 1 THEN
|
|
IF ASC(Z$) > 48 AND ASC(Z$) <= 57 THEN Q = ASC(Z$) - 48
|
|
IF Z$ = " " THEN GOSUB 5350
|
|
IF Z$ = CHR$(13) THEN GOSUB 5750
|
|
END IF
|
|
IF LEN(Z$) = 2 THEN
|
|
IF Z$ = CHR$(0) + "H" THEN GOSUB 1100 'UP
|
|
IF Z$ = CHR$(0) + "K" THEN GOSUB 1120 'LEFT
|
|
IF Z$ = CHR$(0) + "M" THEN GOSUB 1140 'RIGHT
|
|
IF Z$ = CHR$(0) + "P" THEN GOSUB 1160 'DOWN
|
|
END IF
|
|
|
|
S = S + Q * 100
|
|
IF S > O GOTO 6410
|
|
REM * TIME ROUTINE *
|
|
SEC2 = VAL(RIGHT$(TIME$, 2))
|
|
SECNEW = SEC2
|
|
IF SECNEW = SECOLD GOTO 5280
|
|
IF SECNEW < SECOLD THEN N8 = N8 + 1
|
|
SECOLD = SEC2
|
|
A2NEW = A2 - (SEC2 + (60 * N8) - SEC1)
|
|
IF A2NEW < 0 THEN A2NEW = A2NEW + 60: A1 = A1 - 1: A2 = A2 + 60
|
|
IF A1 < 0 GOTO 6760
|
|
5280 GOTO 2320
|
|
REM * DISPLAY SKY FIGHTER *
|
|
IF J - S < 10000 THEN A = 3
|
|
5310 REM * NEW GAME *
|
|
PRINT
|
|
PRINT "HIT ENTER TO PLAY AGAIN, ESC TO GIVE UP"
|
|
'5340 B$ = INKEY$: IF B$ = CHR$(13) THEN GOTO 1300 ELSE IF B$ = CHR$(27) THEN CLS : WIDTH 80: SCREEN 0: KEY ON: GOTO 9911 ELSE GOTO 5340
|
|
5340 B$ = INKEY$: IF B$ = CHR$(13) THEN GOTO 1300 ELSE IF B$ = CHR$(27) THEN CLS : WIDTH 80: SCREEN 0: GOTO 9911 ELSE GOTO 5340
|
|
5350 REM * FIRE CANNON *
|
|
'KEY(2) STOP: KEY(11) STOP: KEY(12) STOP: KEY(13) STOP: KEY(14) STOP
|
|
PUT (2, 2), LASAR
|
|
FOR J2 = 5000 TO 100 STEP -250
|
|
SOUND J2, .01 * 18.2
|
|
NEXT J2
|
|
PUT (2, 2), LASAR
|
|
IF G - S < 26000 AND ABS(IMX - E) < IMR1 AND ABS(IMY - F) < IMR2 GOTO 5450
|
|
IF J - S < 26000 AND ABS(DVX - H) < DVR1 AND ABS(DVY - i) < DVR2 GOTO 5580
|
|
GOTO 5730
|
|
5450 FOR I9 = 1 TO 2: PUT (E - 2, F - 3), EXPL3: DELAYPERIOD% = 64: GOSUB DELAY: PUT (E - 2, F - 3), EXPL3: NEXT I9
|
|
FOR I9 = 1 TO 2: PUT (E - 2, F - 3), EXPL4: DELAYPERIOD% = 64: GOSUB DELAY: PUT (E - 2, F - 3), EXPL4: NEXT I9
|
|
PUT (E, F), IM
|
|
IF IMR2 = 1 GOTO 5540
|
|
FOR I9 = 1 TO 2: PUT (E - 2, F - 3), EXPL5: DELAYPERIOD% = 64: GOSUB DELAY: PUT (E - 2, F - 3), EXPL5: NEXT I9
|
|
FOR I9 = 1 TO 2: PUT (E - 2, F - 3), EXPL6: DELAYPERIOD% = 64: GOSUB DELAY: PUT (E - 2, F - 3), EXPL6: NEXT I9
|
|
IF IMR2 = 2 GOTO 5540
|
|
FOR I9 = 1 TO 2: PUT (E - 2, F - 3), EXPL7: DELAYPERIOD% = 64: GOSUB DELAY: PUT (E - 2, F - 3), EXPL7: NEXT I9
|
|
FOR I9 = 1 TO 2: PUT (E - 2, F - 3), EXPL8: DELAYPERIOD% = 64: GOSUB DELAY: PUT (E - 2, F - 3), EXPL8: NEXT I9
|
|
5540 G = G + 25000: E = INT(RND * 61) + 10: F = INT(RND * 21) + 10: FLAG3 = 0: IMNEW = 0: IMPFIGH2 = 0: IMPFIGH3 = 0
|
|
IMX = 38: IMY = 21: IMR1 = 1: IMR2 = 1
|
|
IM(0) = IM1(0): IM(1) = IM1(1): IM(2) = IM1(2): IM(3) = IM1(3): IM(4) = IM1(4): IM(5) = IM1(5): IM(6) = IM1(6)
|
|
GOTO 5730
|
|
5580 FOR I9 = 1 TO 2: PUT (H - 2, i - 3), EXPL3: DELAYPERIOD% = 64: GOSUB DELAY: PUT (H - 2, i - 3), EXPL3: NEXT I9
|
|
FOR I9 = 1 TO 2: PUT (H - 2, i - 3), EXPL4: DELAYPERIOD% = 64: GOSUB DELAY: PUT (H - 2, i - 3), EXPL4: NEXT I9
|
|
PUT (H, i), DV
|
|
IF DVR2 = 1 GOTO 5670
|
|
FOR I9 = 1 TO 2: PUT (H - 2, i - 3), EXPL5: DELAYPERIOD% = 64: GOSUB DELAY: PUT (H - 2, i - 3), EXPL5: NEXT I9
|
|
FOR I9 = 1 TO 2: PUT (H - 2, i - 3), EXPL6: DELAYPERIOD% = 64: GOSUB DELAY: PUT (H - 2, i - 3), EXPL6: NEXT I9
|
|
IF DVR2 = 2 GOTO 5670
|
|
FOR I9 = 1 TO 2: PUT (H - 2, i - 3), EXPL7: DELAYPERIOD% = 64: GOSUB DELAY: PUT (H - 2, i - 3), EXPL7: NEXT I9
|
|
FOR I9 = 1 TO 2: PUT (H - 2, i - 3), EXPL8: DELAYPERIOD% = 64: GOSUB DELAY: PUT (H - 2, i - 3), EXPL8: NEXT I9
|
|
5670 J = J + 25000: H = INT(RND * 61) + 10: i = INT(RND * 21) + 10: FLAG4 = 0: LOCATE 19, 8: PRINT "KM TO IMPERIAL FIGHTER";
|
|
DVNEW = 0: DVADER2 = 0: DVADER3 = 0
|
|
DVX = 38: DVY = 21: DVR1 = 1: DVR2 = 1
|
|
IF DVGONE = 0 THEN DV3(0) = IM3(0): DV3(1) = IM3(1): DV3(2) = IM3(2): DV3(3) = IM3(3): DV3(4) = IM3(4): DV3(5) = IM3(5): DV3(6) = IM3(6)
|
|
DV(0) = DV1(0): DV(1) = DV1(1): DV(2) = DV1(2): DV(3) = DV1(3): DV(4) = DV1(4): DV(5) = DV1(5): DV(6) = DV1(6)
|
|
DVGONE = 1
|
|
5730 'KEY(2) ON: KEY(11) ON: KEY(12) ON: KEY(13) ON: KEY(14) ON
|
|
RETURN
|
|
5750 REM * FIRE TORPEDO *
|
|
'KEY(1) STOP: KEY(11) STOP: KEY(12) STOP: KEY(13) STOP: KEY(14) STOP
|
|
IF Z = 0 THEN 3600
|
|
FOR J2 = 1500 TO 100 STEP -20
|
|
SOUND J2, .01 * 18.2
|
|
SOUND 3600 - J2, .01 * 18.2
|
|
NEXT J2
|
|
Z = Z - 1
|
|
IF O - S > 10000 THEN 5990
|
|
IF POINT(38, 21) <> 3 THEN 5880
|
|
IF SKILL = 0 GOTO 6100
|
|
K = INT(RND * 10)
|
|
IF K > SKILL + 1 THEN 6100
|
|
5880 FOR K = 1 TO 2
|
|
LOCATE 24, 1: PRINT "**** TORPEDO MISSED ****";
|
|
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
|
NEXT K
|
|
LOCATE 24, 1: PRINT "**** TORPEDO MISSED ****";
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
IF Z <= 0 THEN 4780
|
|
GOTO 6080
|
|
5990 FOR K = 1 TO 2
|
|
LOCATE 24, 1: PRINT "**** OUT OF RANGE ****";
|
|
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
|
NEXT K
|
|
LOCATE 24, 1: PRINT "**** OUT OF RANGE ****";
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
|
LOCATE 24, 1: PRINT " ";
|
|
6080 'KEY(1) ON: KEY(11) ON: KEY(12) ON: KEY(13) ON: KEY(14) ON
|
|
RETURN
|
|
6100 REM * GAME WON *
|
|
'KEY(1) OFF: KEY(2) OFF: KEY(11) OFF: KEY(12) OFF: KEY(13) OFF: KEY(14) OFF
|
|
FOR SCALE = 1 TO 24
|
|
'DRAW "C3;S=SCALE;BM38,21;NM+6,0;NM-6,0;NM+0,-3;NM+0,3;NM-6,3;NM+6,-3;NM-6,-3;NM+6,3;NM+3,-3;NM-3,3;NM+3,3;NM-3,-3;NM+6,2;NM-6,-2;NM-6,1;NM+6,-1;NM+1,3;NM-1,-3"
|
|
D2S = SCALE
|
|
DRAW2$ = "C3;BM38,21;NM+6,0;NM-6,0;NM+0,-3;NM+0,3;NM-6,3;NM+6,-3;NM-6,-3;NM+6,3;NM+3,-3;NM-3,3;NM+3,3;NM-3,-3;NM+6,2;NM-6,-2;NM-6,1;NM+6,-1;NM+1,3;NM-1,-3": GOSUB DRAW2
|
|
D2S = 0
|
|
NEXT SCALE
|
|
CLS
|
|
FOR K = 1 TO 5
|
|
SOUND 37, .1 * 18.2
|
|
SCREEN 0: WIDTH 40
|
|
FOR A = 1 TO 10: NEXT A
|
|
SCREEN 1: WIDTH 80
|
|
NEXT K
|
|
WIDTH 40
|
|
CLS : PRINT : PRINT : PRINT
|
|
PRINT "* * * * * * * * * * * * * * * * * * * *";
|
|
PRINT "* *";
|
|
PRINT "* *";
|
|
PRINT "* THE FORCE IS WITH YOU !! *";
|
|
PRINT "* *";
|
|
PRINT "* YOU HAVE DESTROYED THE DEATH STAR ! *";
|
|
PRINT "* *";
|
|
PRINT "* YOU HAVE SAVED THE REPUBLIC ! *";
|
|
PRINT "* *";
|
|
PRINT "* PRINCESS LEAH WILL LOVE YOU ALWAYS! *";
|
|
PRINT "* *";
|
|
PRINT "* * * * * * * * * * * * * * * * * * * *"
|
|
SOUND 525.25, 18.2: SOUND 783.99, 18.2 / 2: SOUND 698.46, 18.2 / 6: SOUND 659.26, 18.2 / 6: SOUND 587.33, 18.2 / 6: SOUND 1046.6, 18.2: SOUND 783.99, 18.2 / 2: SOUND 698.46, 18.2 / 6: SOUND 659.26, 18.2 / 6: SOUND 587.33, 18.2 / 6
|
|
SOUND 1046.5, 18.2: SOUND 783.99, 18.2 / 2: SOUND 698.46, 18.2 / 6: SOUND 659.26, 18.2 / 6: SOUND 698.46, 18.2 / 6: SOUND 587.33, 18.2
|
|
PRINT
|
|
GOTO 5310
|
|
REM * COLLISION WITH DEATH STAR *
|
|
6410 'KEY(1) OFF: KEY(2) OFF: KEY(11) OFF: KEY(12) OFF: KEY(13) OFF: KEY(14) OFF
|
|
6420 DELTAX = 35 - M: DELTAY = 18 - N
|
|
IF DELTAX > 0 THEN M = M + 1
|
|
IF DELTAX < 0 THEN M = M - 1
|
|
IF DELTAY > 0 THEN N = N + 1
|
|
IF DELTAY < 0 THEN N = N - 1
|
|
IF DELTAX = 0 AND DELTAY = 0 GOTO 6530
|
|
PUT (M, N), DS
|
|
PUT (MP, NP), DS
|
|
MP = M: NP = N
|
|
DELAYPERIOD% = 32: GOSUB DELAY 'PLAY "P32"
|
|
GOTO 6420
|
|
6530 FOR RAD = 4 TO 20
|
|
CIRCLE (38, 21), RAD, 3
|
|
DELAYPERIOD% = 32: GOSUB DELAY 'PLAY "P32"
|
|
NEXT RAD
|
|
CLS : PRINT "CRASH"
|
|
FOR J2 = 1000 TO 37 STEP -10
|
|
SOUND J2, .01 * 18.2
|
|
NEXT J2
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
|
PRINT
|
|
PRINT "DARTH VADER IS LAUGHING AT YOU."
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
|
PRINT
|
|
PRINT "YOU HAVE JUST COLLIDED WITH THE DEATH";
|
|
PRINT "STAR. THEY DID NOT EVEN HEAR THE";
|
|
PRINT "COLLISION. YOU DID NOT EVEN SCRATCH";
|
|
PRINT "THE DEATH STAR'S PAINT, BUT YOU ARE ";
|
|
PRINT "DEAD!"
|
|
PRINT
|
|
PRINT "********* YOU LOSE!! *********"
|
|
PRINT
|
|
GOTO 5310
|
|
REM * OUT OF TIME *
|
|
6760 'KEY(1) OFF: KEY(2) OFF: KEY(11) OFF: KEY(12) OFF: KEY(13) OFF: KEY(14) OFF
|
|
CLS : PRINT "TOO LATE!"
|
|
FOR J2 = 1000 TO 37 STEP -10
|
|
SOUND J2, .01 * 18.2
|
|
NEXT J2
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
|
PRINT
|
|
PRINT "DARTH VADER IS LAUGHING AT YOU."
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
|
PRINT
|
|
PRINT "THE DEATH STAR HAS JUST DESTROYED";
|
|
PRINT "PRINCESS LEAH AND THE ENTIRE REBEL";
|
|
PRINT "STRONGHOLD";
|
|
PRINT
|
|
PRINT "********* YOU LOSE!! *********"
|
|
PRINT
|
|
GOTO 5310
|
|
6930 CLS
|
|
PRINT " STAR PILOT INSTRUCTIONS"
|
|
PRINT
|
|
PRINT " THE DEATH STAR SPACE STATION, UNDER";
|
|
PRINT "THE COMMAND OF DARTH VADER, IS THE MOST";
|
|
PRINT "POWERFUL WEAPON THE UNIVERSE HAS EVER";
|
|
PRINT "KNOWN. A FRONTAL ATTACK BY ANY OTHER";
|
|
PRINT "CRAFT WOULD BE ABSOLUTE SUICIDE. HOWEVER";
|
|
PRINT "INTELLIGENCE DELIVERED TO OUR REPUBLIC";
|
|
PRINT "HEADQUARTERS BY THE ANDROIDS R2D2 AND";
|
|
PRINT "C3PO GIVES A FAINT HOPE OF A SUCCESSFUL";
|
|
PRINT "ATTACK BY A SMALL ONE OR TWO PASSENGER";
|
|
PRINT "X-WING FIGHTER."
|
|
PRINT
|
|
PRINT " THERE IS A SMALL, UNSHIELDED EXHAUST";
|
|
PRINT "PORT ON THE SURFACE OF THE DEATH STAR";
|
|
PRINT "THAT LEADS DIRECTLY TO THE MAIN REACTOR.";
|
|
PRINT "SINCE IT IS AN EMERGENCY THERMAL PORT IN";
|
|
PRINT "CASE THE REACTOR OVERHEATS, IT COULD NOT";
|
|
PRINT "BE SHIELDED."
|
|
PRINT
|
|
INPUT " (PRESS ENTER TO CONTINUE)", B$
|
|
CLS
|
|
PRINT
|
|
PRINT " IF YOU CAN SLIP YOUR SMALL FIGHTER";
|
|
PRINT "PAST THE DEATH STAR'S DEFENSES AND MAKE";
|
|
PRINT "A DIRECT HIT ON THE THERMAL EXHAUST PORT";
|
|
PRINT "WITH A TORPEDO, THERE IS A CHANCE THAT";
|
|
PRINT "THE TORPEDO WILL PENETRATE TO THE";
|
|
PRINT "MAIN REACTOR AND START A CHAIN REACTION,";
|
|
PRINT "DESTROYING THE DEATH STAR."
|
|
PRINT
|
|
PRINT " IT IS A SLIM CHANCE, BUT IT IS THE";
|
|
PRINT "ONLY HOPE THE REPUBLIC HAS. OBI-WAN";
|
|
PRINT "KENOBI GAVE HIS LIFE TO GET THE MESSAGE";
|
|
PRINT "HERE, SO HE CONSIDERED IT IMPORTANT."
|
|
PRINT : PRINT : PRINT : PRINT
|
|
PRINT "PRESS ENTER FOR X-WING FIGHTER ";
|
|
INPUT " FAMILIARIZATION", B$
|
|
CLS
|
|
PRINT " REPUBLIC X-WING FIGHTER "
|
|
PRINT
|
|
PRINT " THE X-WING FIGHTER IS A SMALL ONE";
|
|
PRINT "MAN SPACESHIP THAT IS, QUITE FRANKLY,";
|
|
PRINT "OBSOLETE. IT IS ARMED ONLY WITH A LASER";
|
|
PRINT "CANNON AND THREE TORPEDOES. USE THE";
|
|
PRINT "LASER CANNON TO FIGHT OFF ANY IMPERIAL";
|
|
PRINT "FIGHTERS AND SAVE THE TORPEDOES FOR THE";
|
|
PRINT "DEATH STAR."
|
|
PRINT
|
|
PRINT " THE TARGET ACQUISITION RADAR CAN";
|
|
PRINT "DETECT IN EXCESS OF 100,000 KILOMETERS";
|
|
PRINT "AWAY, BUT CAN ONLY DISPLAY TARGETS WITH-";
|
|
PRINT "IN 20,000 KM. THEREFORE, YOU WILL BE";
|
|
PRINT "WARNED OF APPROACHING TARGETS ON YOUR";
|
|
PRINT "CONTROL PANEL BEFORE THEY ARE DISPLAYED";
|
|
PRINT "ON THE RADAR SCREEN."
|
|
PRINT
|
|
INPUT " (PRESS ENTER TO CONTINUE)", B$
|
|
CLS
|
|
PRINT
|
|
PRINT " THE LASER CANNON IS AN ANTIQUATED";
|
|
PRINT "WEAPON. TO HIT AN ENEMY, YOU MUST HAVE";
|
|
PRINT "HIM IN THE EXACT CENTER OF THE CROSS";
|
|
PRINT "HAIRS ON YOUR RADAR SCREEN. THEN YOU MAY";
|
|
PRINT "FIRE THE LASER CANNON BY PRESSING THE";
|
|
PRINT "SPACE BAR ON YOUR CONTROL PANEL."
|
|
PRINT
|
|
PRINT " YOUR THREE TORPEDOES ARE COMPUTER";
|
|
PRINT "GUIDED, BUT ALSO QUITE LIMITED. MAKE";
|
|
PRINT "SURE THAT YOU ARE WITHIN 10000 KM OF THE";
|
|
PRINT "DEATH STAR AND THAT YOU HAVE SOME PART";
|
|
PRINT "OF THE SPACE STATION IN THE CENTER OF";
|
|
PRINT "THE CROSS HAIRS ON YOUR RADAR SCREEN.";
|
|
PRINT "EVEN THEN, SINCE IT TAKES A PERFECT HIT";
|
|
PRINT "ON THE EXHAUST PORT TO DESTROY THE DEATH";
|
|
PRINT "STAR, YOU MAY REQUIRE MORE THAN ONE";
|
|
PRINT "TORPEDO. PRESS THE ENTER KEY TO FIRE THE";
|
|
PRINT "TORPEDO."
|
|
PRINT
|
|
INPUT " (PRESS ENTER TO CONTINUE)", B$
|
|
CLS
|
|
PRINT
|
|
PRINT " THE SPEED OF YOUR SHIP IS CONTROLLED";
|
|
PRINT "BY TYPING THE NUMBERS 1 THROUGH 9 (FOR";
|
|
PRINT "MACH 10 THROUGH 90 RESPECTIVELY). THE";
|
|
PRINT "MOVEMENT OF YOUR SHIP IS CONTROLLED BY";
|
|
PRINT "THE CURSOR CONTROLS. SINCE THESE INPUTS";
|
|
PRINT "MOVE YOUR SHIP AND NOT THE TARGETS, THE";
|
|
PRINT "TARGETS APPEAR TO MOVE IN THE OPPOSITE";
|
|
PRINT "DIRECTION. ALSO, YOU CAN EXPECT THE";
|
|
PRINT "ENEMY TO TAKE EVASIVE ACTION."
|
|
PRINT
|
|
PRINT " WHEN SELECTING THE SKILL LEVEL, 0 IS";
|
|
PRINT "THE EASIEST GAME AND 3 IS THE HARDEST.";
|
|
PRINT "SKILL LEVEL 0 PROVIDES THE BEST CHANCE";
|
|
PRINT "OF BEING MISSED BY THE FIGHTERS AND OF";
|
|
PRINT "HITTING THE DEATH STAR. LEVEL 0 ALSO";
|
|
PRINT "PROVIDES THE LARGEST TIME LIMIT BEFORE";
|
|
PRINT "THE DEATH STAR DESTROYS THE REBEL BASE."
|
|
PRINT
|
|
PRINT
|
|
INPUT "PRESS ENTER FOR TAKE-OFF", B$
|
|
CLS
|
|
PRINT "****************************************"
|
|
PRINT
|
|
PRINT " MAY THE FORCE BE WITH YOU"
|
|
PRINT
|
|
PRINT "****************************************"
|
|
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
|
GOTO 1300
|
|
9911 CLS
|
|
END
|
|
|
|
'PAUSES FOR THE DURATION OF PLAY "P?" WHERE DELAYPERIOD%=?
|
|
'EG. DELAYPERIOD%=1: GOSUB DELAY
|
|
DELAY:
|
|
TIMERTICKS% = 1 / DELAYPERIOD% * 18.2
|
|
IF TIMERTICKS% = 0 THEN TIMERTICKS% = 1
|
|
LASTTIMERVALUE! = TIMER
|
|
FOR TIMERTICK% = 1 TO TIMERTICKS%
|
|
DO: TIMERVALUE! = TIMER: LOOP WHILE TIMERVALUE! = LASTTIMERVALUE!
|
|
LASTTIMERVALUE! = TIMERVALUE!
|
|
NEXT
|
|
RETURN
|
|
|
|
'DRAW2 IS A WORKAROUND FOR THE DRAW STATEMENT USING STRING DRAW2$
|
|
'*VERY LIMITED FUNCTIONALITY*
|
|
DRAW2:
|
|
IF D2S = 0 THEN D2S2! = 1 ELSE D2S2! = D2S / 4
|
|
D2D$ = ""
|
|
DO WHILE LEN(DRAW2$)
|
|
D2$ = LEFT$(DRAW2$, 1): DRAW2$ = RIGHT$(DRAW2$, LEN(DRAW2$) - 1)
|
|
IF D2$ = "C" THEN
|
|
D2V = VAL(DRAW2$): D2L = LEN(LTRIM$(RTRIM$(STR$(D2V)))): DRAW2$ = RIGHT$(DRAW2$, LEN(DRAW2$) - D2L)
|
|
D2COL = D2V
|
|
D2D$ = D2D$ + "C" + STR$(D2COL)
|
|
END IF
|
|
IF D2$ = "B" THEN D2NODRAW = 1: D2D$ = D2D$ + "B"
|
|
IF D2$ = "N" THEN D2NOMOVE = 1: D2D$ = D2D$ + "N"
|
|
IF D2$ = "M" THEN
|
|
D2D$ = D2D$ + "M"
|
|
D2$ = LEFT$(DRAW2$, 1)
|
|
IF D2$ = "+" OR D2$ = "-" THEN
|
|
D2RELATIVE = 1
|
|
IF D2$ = "+" THEN DRAW2$ = RIGHT$(DRAW2$, LEN(DRAW2$) - 1): D2D$ = D2D$ + "+"
|
|
END IF
|
|
D2V = VAL(DRAW2$): D2L = LEN(LTRIM$(RTRIM$(STR$(D2V)))): DRAW2$ = RIGHT$(DRAW2$, LEN(DRAW2$) - D2L)
|
|
D2X = D2V
|
|
D2D$ = D2D$ + STR$(D2X) + ","
|
|
DRAW2$ = RIGHT$(DRAW2$, LEN(DRAW2$) - 1) 'SKIP COMMA
|
|
D2V = VAL(DRAW2$): D2L = LEN(LTRIM$(RTRIM$(STR$(D2V)))): DRAW2$ = RIGHT$(DRAW2$, LEN(DRAW2$) - D2L)
|
|
D2Y = D2V
|
|
D2D$ = D2D$ + STR$(D2Y)
|
|
'ASSUME NODRAW AND NOMOVE ARE USED EXCLUSIVELY
|
|
IF D2NOMOVE = 0 AND D2NODRAW = 0 THEN
|
|
IF D2RELATIVE THEN LINE -STEP(D2X * D2S2!, D2Y * D2S2!), D2COL ELSE LINE -(D2X, D2Y), D2COL
|
|
END IF
|
|
IF D2NODRAW THEN
|
|
IF D2RELATIVE THEN PSET STEP(D2X * D2S2!, D2Y * D2S2!), D2COL ELSE PSET (D2X, D2Y), D2COL
|
|
END IF
|
|
IF D2NOMOVE THEN
|
|
'ASSUME RELATIVE
|
|
LINE -STEP(D2X * D2S2!, D2Y * D2S2!), D2COL: LINE -STEP(-D2X * D2S2!, -D2Y * D2S2!), D2COL
|
|
END IF
|
|
D2RELATIVE = 0: D2NODRAW = 0: D2NOMOVE = 0
|
|
END IF
|
|
LOOP
|
|
RETURN
|
|
|