'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