'=========================================================================== ' Subject: FEDERATION DEFENDER Date: 08-29-96 (10:17) ' Author: Richard Hilsden Code: QB, QBasic, PDS ' Origin: rhilsden@idirect.com Packet: GAMES.ABC '=========================================================================== 'Welcome To federation Defender This is Version 1.01 '1.0 Was Almost the same Exepet it was way to easy so 'I made It alot harder (Still a bit too easy) 'This happends to be my first Game that I have made 'And I hope you think its good most of my friends say 'It's fine but the don't like the control Oh well. 'Ya there Are a few gliches And in the next verion I 'should have them all fixed. You may say My code Is 'veary messy Well that's because I've only been programing 'for 2 Months. I hope you enjoy it DECLARE SUB LostGame () DECLARE SUB BeatGame () DECLARE SUB Center0 (Row!, Text$, c!) DECLARE SUB TheStory () DECLARE SUB Center (Row, Text$, c) DECLARE SUB Game1 () DECLARE SUB Pacman () DECLARE SUB BigD () DECLARE SUB Bye () DECLARE SUB DrawBye () DIM dot(1000) CLEAR , , 20005 SCREEN 12 GameEnd% = 0 pacx = 320 pacy = 225 s% = 0 CONST ArraySize = 242, NumGraphics = 21 CONST Delay = 700 CONST True = -1, False = NOT True DIM Graphic(0 TO ArraySize * NumGraphics) BigD CLEAR , , 20005 Pacman CLEAR , , 20005 Count% = 2 SCREEN 13 2 CLEAR , , 20005 ON PLAY(1) GOSUB MuchMusic doth% = 75 CLS COLOR 15 CIRCLE (210, 120), 4, 7 'dot PAINT (210, 120), 4, 7 GET (220, 145)-(200, 95), dot CLS 3 LINE (62, 10)-(230, 70), 0, BF LINE (62, 10)-(230, 70), 12, B LINE (61, 9)-(231, 71), 4, B LINE (60, 8)-(232, 72), 7, B COLOR 15: LOCATE 5, 10: PRINT "F": PLAY "l30n0" COLOR 2: LOCATE 5, 10: PRINT "F": COLOR 15: LOCATE 5, 11: PRINT "e": PLAY "l30n0" COLOR 2: LOCATE 5, 11: PRINT "e": COLOR 15: LOCATE 5, 12: PRINT "d": PLAY "l30n0" COLOR 2: LOCATE 5, 12: PRINT "d": COLOR 15: LOCATE 5, 13: PRINT "e": PLAY "l30n0" COLOR 2: LOCATE 5, 13: PRINT "e": COLOR 15: LOCATE 5, 14: PRINT "r": PLAY "l30n0" COLOR 2: LOCATE 5, 14: PRINT "r": COLOR 15: LOCATE 5, 15: PRINT "a": LOCATE 17, 15: PRINT "E": LOCATE 15, 15: PRINT "S": LOCATE 13, 15: PRINT "P": PLAY "l30n0" COLOR 2: LOCATE 5, 15: PRINT "a": LOCATE 17, 15: PRINT "E": LOCATE 15, 15: PRINT "S": LOCATE 13, 15: PRINT "P": COLOR 15: LOCATE 5, 16: PRINT "t": LOCATE 17, 16: PRINT "x": LOCATE 15, 16: PRINT "t": LOCATE 13, 16: PRINT "l": PLAY "l30n0" COLOR 2: LOCATE 5, 16: PRINT "t": LOCATE 17, 16: PRINT "x": LOCATE 15, 16: PRINT "t": LOCATE 13, 16: PRINT "l": COLOR 15: LOCATE 5, 17: PRINT "i": LOCATE 17, 17: PRINT "i": LOCATE 15, 17: PRINT "o": LOCATE 13, 17: PRINT "a": PLAY "l30n0" COLOR 2: LOCATE 5, 17: PRINT "i": LOCATE 17, 17: PRINT "i": LOCATE 15, 17: PRINT "o": LOCATE 13, 17: PRINT "a": COLOR 15: LOCATE 5, 18: PRINT "o": LOCATE 17, 18: PRINT "t": LOCATE 15, 18: PRINT "r": LOCATE 13, 18: PRINT "y": PLAY "l30n0" COLOR 2: LOCATE 5, 18: PRINT "o": LOCATE 17, 18: PRINT "t": LOCATE 15, 18: PRINT "r": LOCATE 13, 18: PRINT "y": COLOR 15: LOCATE 5, 19: PRINT "n": LOCATE 15, 19: PRINT "y": PLAY "l30n0" COLOR 2: LOCATE 5, 19: PRINT "n": LOCATE 15, 19: PRINT "y": PLAY "l30n0" COLOR 15: LOCATE 5, 21: PRINT "D": PLAY "L30n0" COLOR 2: LOCATE 5, 21: PRINT "D": COLOR 15: LOCATE 5, 22: PRINT "e": PLAY "l30n0" COLOR 2: LOCATE 5, 22: PRINT "e": COLOR 15: LOCATE 5, 23: PRINT "f": PLAY "l30n0" COLOR 2: LOCATE 5, 23: PRINT "f": COLOR 15: LOCATE 5, 24: PRINT "e": PLAY "l30n0" COLOR 2: LOCATE 5, 24: PRINT "e": COLOR 15: LOCATE 5, 25: PRINT "n": PLAY "l30n0" COLOR 2: LOCATE 5, 25: PRINT "n": COLOR 15: LOCATE 5, 26: PRINT "d": PLAY "l30n0" COLOR 2: LOCATE 5, 26: PRINT "d": COLOR 15: LOCATE 5, 27: PRINT "e": PLAY "l30n0" COLOR 2: LOCATE 5, 27: PRINT "e": COLOR 15: LOCATE 5, 28: PRINT "r": PLAY "l30n0" COLOR 2: LOCATE 5, 28: PRINT "r" PUT (90, doth%), dot, PSET PLAY ON MBuff$ = "T150L2O3CGP16L16FEDL2>CC 75 THEN doth% = doth% - 5 'v% = v% - 1 END IF NEXT PUT (90, doth%), dot, PSET GOTO 1 LOOP UNTIL INKEY$ = CHR$(27) retern: IF doth% = 75 THEN CLEAR , , 20005: CALL Game1: CLEAR , , 20005: GOTO 2 IF doth% = 90 THEN CLEAR , , 20005: CALL TheStory: CLEAR , , 20005: GOTO 2 IF doth% = 105 THEN END IF SCREEN 12 'Bye SYSTEM MuchMusic: Count% = Count% + 1 SELECT CASE Count% CASE 0: MBuff$ = "T150L2O3CGP16L16FEDL2>CC (StarNum% / LNum%) * CL THEN CL = CL + 1 StarX(I%) = StarX(I%) + Layer(CL) IF StarX(I%) < 1 THEN StarX(I%) = 619: StarY(I%) = RND * 619 IF StarX(I%) > 599 THEN StarX(I%) = 1: StarY(I%) = RND * 599 c% = (CL * 4) + 19 PSET (StarX(I%), StarY(I%)), c% NEXT I% IF g% > 20 THEN FOR jkjkj% = 1 TO 3 g% = g% - 2.5 PUT (x%, g%), Ship, PSET NEXT jkjkj% END IF COLOR 15: LOCATE 8, 10 PRINT "Thanks to you, The Nebulatic Army has been defeated. The Vanderbelt" PRINT " king gave you the medal of bravery for your boldness in the" PRINT " destruction of The Nebulatic race. The galaxy is safe... " PRINT "" PRINT " -- At least For Now --" LOOP WHILE INKEY$ = "" IF g% > 20 THEN FOR jkjkj% = 1 TO 3 g% = g% - 2.5 PUT (x%, g%), Ship, PSET NEXT jkjkj% END IF END SUB SUB BigD CLS SCREEN 12 VIEW (0, 0)-(639, 479) WINDOW (0, 0)-(200, 200) DRAW "bl155r20d8l10g5d2r15d20g5l20u8r10e5u2l15u20e5br40" PLAY "l4n0" PLAY "l4n0" DRAW "r15f5d30g5l15h5u30e5bf5bd1r5f2d24g2l5h2u24e2bu1bh5br35" PLAY "l4n0" DRAW "d40r10u10r10u10l10u10r15u10l25br40" PLAY "l4n0" DRAW "d10r8d30r9u30r8u10l25br40" PLAY "l4n0" DRAW "d40r5e8f8r5u40l10d10l5u10l10br40" PLAY "l4n0" DRAW "d40r10u10r5d10r10u40l25br10bd10d5r5u5l5bu10br30" PLAY "l4n0" DRAW "d40r10u10f10r5u5h15r10e5u10h5l20bf10bu5r5f3d3g3l5u9bd5bh10br40" PLAY "l4n0" DRAW "d40r25u10l15u5r10u10l10u5r15u10l25" FOR I% = 0 TO 63 PALETTE 12, I% LOCATE 6, 21 COLOR 12 PRINT TAB(19); "ÉÍÍÍÍÍÍÍÍ» ÉÍÍÍÍÍÍÍÍ» ÉÍÍÍÍÍÍÍÍ» É» É»" PRINT TAB(19); "ºÉÍÍÍÍÍÍͼ ºÉÍÍÍÍÍÍ»º ºÉÍÍÍÍÍÍ»º ºº ºº" PRINT TAB(19); "ºº ºº ºº ºº ºº ºº ºº" PRINT TAB(19); "ºÈÍÍÍ» ºº ºº ºÈÍÍÍÍÍͼº ºÈÍÍÍÍÍͼº" PRINT TAB(19); "ÈÍÍÍ»ÈÍÍÍ» ºº ºº º ÉÍÍÍÍÍͼ ºÉÍÍÍÍÍÍ»º" PRINT TAB(19); " ÈÍÍÍ»º ºº ºº º ÈÍÍ» ºº ºº" PRINT TAB(19); "ÉÍÍÍÍÍÍͼº ºÈÍÍÍÍÍͼº ºÉÍÍ»ÈÍÍÍ» ºº ºº" PRINT TAB(19); "ÈÍÍÍÍÍÍÍͼ ÈÍÍÍÍÍÍÍͼ ȼ ÈÍÍÍͼ ȼ ȼ" NEXT I% PLAY "l64o6bagfedco5bagfedco4bagfedco3bagfedco2bagfedco1bagfedco0bagfedcl1n0" CLS END SUB SUB Bye VIEW (0, 0)-(639, 479) DO IF flip% = 0 THEN flip% = 1 j% = 64 FOR I% = 0 TO 63 STEP 2 j% = j% - 2 PALETTE 6, j% PALETTE 7, I% LINE (0, 0)-(639, 479), 6, BF COLOR 7 DrawBye NEXT I% ELSE flip% = 0 j% = 64 FOR I% = 0 TO 63 STEP 2 j% = j% - 2 PALETTE 7, j% PALETTE 6, I% LINE (0, 0)-(639, 479), 6, BF COLOR 7 DrawBye NEXT I% END IF LOOP WHILE INKEY$ = "" END SUB SUB Center (Row, Text$, c) COLOR c LOCATE Row, 20 - (LEN(Text$) / 2) PRINT Text$ COLOR 15 END SUB SUB Center0 (Row, Text$, c) COLOR c LOCATE Row, 40 - (LEN(Text$) / 2) PRINT Text$ COLOR 15 END SUB SUB DrawBye LOCATE 15, 2: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ": LOCATE 15, 33: PRINT "ÛÛÛÛÛÛÛÛ": LOCATE 15, 50: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ" LOCATE 14, 2: PRINT "ÛÛÛÛ": LOCATE 14, 17: PRINT "ÛÛÛ": LOCATE 14, 32: PRINT "ÛÛÛÛ": LOCATE 14, 38: PRINT "ÛÛÛÛ": LOCATE 14, 50: PRINT "ÛÛÛÛ" LOCATE 16, 2: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ": LOCATE 16, 34: PRINT "ÛÛÛÛÛÛ": LOCATE 16, 50: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ" LOCATE 13, 2: PRINT "ÛÛÛÛ": LOCATE 13, 17: PRINT "ÛÛÛÛÛÛÛ": LOCATE 13, 31: PRINT "ÛÛÛÛ": LOCATE 13, 39: PRINT "ÛÛÛÛ": LOCATE 13, 50: PRINT "ÛÛÛÛ" LOCATE 17, 2: PRINT "ÛÛÛÛ": LOCATE 17, 17: PRINT "ÛÛÛ": LOCATE 17, 35: PRINT "ÛÛÛÛ": LOCATE 17, 50: PRINT "ÛÛÛÛ" LOCATE 12, 2: PRINT "ÛÛÛÛ": LOCATE 12, 21: PRINT "ÛÛÛ": LOCATE 12, 30: PRINT "ÛÛÛÛ": LOCATE 12, 40: PRINT "ÛÛÛÛ": LOCATE 12, 50: PRINT "ÛÛÛÛ" LOCATE 18, 2: PRINT "ÛÛÛÛ": LOCATE 18, 17: PRINT "ÛÛÛÛÛÛÛ": LOCATE 18, 35: PRINT "ÛÛÛÛ": LOCATE 18, 50: PRINT "ÛÛÛÛ" LOCATE 11, 2: PRINT "ÛÛÛÛ": LOCATE 11, 21: PRINT "ÛÛÛ": LOCATE 11, 29: PRINT "ÛÛÛÛ": LOCATE 11, 41: PRINT "ÛÛÛÛ": LOCATE 11, 50: PRINT "ÛÛÛÛ" LOCATE 19, 2: PRINT "ÛÛÛÛ": LOCATE 19, 20: PRINT "ÛÛÛÛ": LOCATE 19, 35: PRINT "ÛÛÛÛ": LOCATE 19, 50: PRINT "ÛÛÛÛ" LOCATE 10, 2: PRINT "ÛÛÛÛ": LOCATE 10, 18: PRINT "ÛÛÛÛÛÛ": LOCATE 10, 28: PRINT "ÛÛÛÛ": LOCATE 10, 42: PRINT "ÛÛÛÛ": LOCATE 10, 50: PRINT "ÛÛÛÛ" LOCATE 20, 2: PRINT "ÛÛÛÛ": LOCATE 20, 20: PRINT "ÛÛÛÛ": LOCATE 20, 35: PRINT "ÛÛÛÛ": LOCATE 20, 50: PRINT "ÛÛÛÛ" LOCATE 9, 2: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ": LOCATE 9, 27: PRINT "ÛÛÛÛ": LOCATE 9, 43: PRINT "ÛÛÛÛ": LOCATE 9, 50: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ" LOCATE 21, 2: PRINT "ÛÛÛÛ": LOCATE 21, 18: PRINT "ÛÛÛÛÛÛ": LOCATE 21, 35: PRINT "ÛÛÛÛ": LOCATE 21, 50: PRINT "ÛÛÛÛ" LOCATE 8, 2: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ": LOCATE 8, 26: PRINT "ÛÛÛÛ": LOCATE 8, 44: PRINT "ÛÛÛÛ": LOCATE 8, 50: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ" LOCATE 22, 2: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ": LOCATE 22, 35: PRINT "ÛÛÛÛ": LOCATE 22, 50: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ" LOCATE 23, 2: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ": LOCATE 23, 35: PRINT "ÛÛÛÛ": LOCATE 23, 50: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ" END SUB SUB Game1 DIM Ship(900) DIM Enemy(900) DIM shot(800) DIM Eshot(800) RANDOMIZE TIMER leveltoggle% = 1 life% = 2 raguExtraChunky: 'Varable Settings etoggle% = 2 PeashooterFX$ = "l64o1cdefgabagfedc" DrunkFX$ = "l64o1abababababo0cdcdcdcdcd" HomingFX$ = "l64o1abo0cdo1abo0cdo1abo0cdo1abo0cdo1abo0cdo1ab" LaserFX$ = "l64 o6bgec o5bgec o2be o0gc" ShotFX$ = "l64 o5ec o6bgec o5bgec o2bgec o0bgec" ex% = 30 'Enemy shot Left & right ey% = 60 'Enemyshot up & down g% = 312 'Up & Down x% = 288 'Left & right rc% = 0 v% = 1 l% = 15 'Enemy up & down r% = 20 'Enemy left & right d% = 30 'Shot up & down f% = 60 'Shot left & right pee% = 0 ts% = 800 MasterLeveltoggle% = 1 hit% = 0 EnemyLife% = 3 hitshot = 0 die% = 0 'ewt% = RND * 3 + 1 'Random EWT IF leveltoggle% = 1 THEN ewt% = 3 'Enemy Weapon Type: ELSEIF leveltoggle% = 2 THEN ewt% = 2 ELSEIF leveltoggle% = 3 OR leveltoggle% = 4 THEN ewt% = 1 ELSEIF leveltoggle% > 4 THEN ewt% = 4 EnemyLife% = 4 ELSE ewt% = 4 END IF '1 = Class I laser '2 = Peashooter '3 = RS-1 "Drunk" torpedo '4 = RS-2 "Homing torpedo SCREEN 12 'Enemy Shot Code: PALETTE 14, 63 IF ewt% = 1 THEN LINE (2, 10)-(2, 45), 4 'Laser GET (1, 1)-(3, 50), Eshot 'Laser ELSEIF Ewt2% = 1 THEN LINE (2, 10)-(2, 45), 4 GET (1, 1)-(3, 50), Eshot ELSEIF ewt% = 3 OR ewt% = 4 OR Ewt2% = 1 THEN CIRCLE (210, 120), 3, 7 'Torpedoes ELSEIF ewt% = 2 THEN CIRCLE (210, 120), 2, 7 'Peashooter PAINT (210, 120), 2, 7 'Peashooter END IF IF ewt% = 4 OR Ewt2% = 1 THEN PAINT (210, 120), 3, 7 'Homing torpedo ELSEIF ewt% = 3 THEN PAINT (210, 120), 5, 7 'Drunk torpedo ELSE END IF IF ewt% = 2 OR ewt% = 3 OR ewt% = 4 OR Ewt2% = 1 THEN GET (220, 130)-(200, 110), Eshot 'Everything but laser ELSE END IF 'PUT (30, 50), Eshot, PSET CLS LINE (10, 10)-(10, 20), 3 'This draws the ship LINE (10, 18)-(20, 15), 3 LINE (25, 20)-(25, 10), 3 LINE (25, 18)-(19, 15), 3 LINE (18, 5)-(18, 15), 2 GET (31, 28)-(2, 1), Ship PALETTE 14, 63 'This draws the enemy CIRCLE (545, 120), 8, 7 PAINT (545, 120), 14, 7 GET (555, 130)-(535, 80), Enemy SCREEN 12 LINE (2, 5)-(2, 40), 3 'This draws the shot GET (1, 70)-(2, 1), shot PUT (30, 50), shot, PSET CLS LINE (15, 432)-(600, 15), 0, BF LINE (11, 433)-(517, 11), 7, B PUT (x%, g%), Ship, PSET 7 IF k% = 2 THEN New% = f% - 40 New1% = 20 LINE (New%, New1%)-STEP(90, 90), 0, BF PUT (x%, g%), Ship, PSET k% = 0 END IF IF die% = 1 THEN die% = 0 New% = 520 New1% = 100 LINE (New%, New1%)-STEP(50, 50), 0, BF PUT (x%, g%), Ship, PSET END IF IF Ek% = 1 THEN Enew% = ex% Enew1% = ey% LINE (Enew%, Enew1%)-STEP(30, 50), 0, BF: ex% = 30: ey% = 60: Ek% = 0 PUT (x%, g%), Ship, PSET END IF COLOR 15: LOCATE 2, 67: PRINT " INFO BAR" 'The Change I made for the Info bar LOCATE 3, 66: PRINT "--------------" LINE (541, 76)-(611, 90), 14, BF LOCATE 7, 67: PRINT " Enemy Life" LOCATE 10, 67: PRINT " Lives:"; life% DO SELECT CASE INKEY$ CASE IS = CHR$(0) + "H": GOSUB Raise CASE IS = CHR$(0) + "P": GOSUB Lower CASE IS = CHR$(0) + "K": GOSUB Left CASE IS = CHR$(0) + "M": GOSUB Right CASE IS = " " IF NOT k% = 1 THEN GOSUB fire CASE IS = CHR$(27): GOSUB ending END SELECT IF d% < 20 THEN d% = g% - 5: k% = 2 IF k% = 2 THEN d% = g% - 5 IF k% = 1 THEN GOTO 56 GOTO 23 Raise: IF g% > 90 THEN FOR l = 1 TO 2 g% = g% - 4 PUT (x%, g%), Ship, PSET NEXT END IF PUT (x%, g%), Ship, PSET RETURN GOTO 23 Lower: IF g% < 370 THEN FOR l = 1 TO 2 g% = g% + 4 PUT (x%, g%), Ship, PSET NEXT END IF PUT (x%, g%), Ship, PSET RETURN GOTO 23 Right: IF x% < 480 THEN FOR l = 1 TO 2 x% = x% + 4 PUT (x%, g%), Ship, PSET NEXT END IF PUT (x%, g%), Ship, PSET RETURN GOTO 23 Left: IF x% > 20 THEN FOR l = 1 TO 2 x% = x% - 4 PUT (x%, g%), Ship, PSET NEXT END IF PUT (x%, g%), Ship, PSET RETURN GOTO 23 overshot: RETURN fire: PLAY "MB X" + VARPTR$(ShotFX$) IF barreltoggle% = 0 THEN barreltoggle% = 1 ELSE barreltoggle% = 0 END IF IF fire% = 6 THEN GOSUB overshot: IF k% = 1 THEN GOTO 56 fire% = fire% + 1 d% = g% - 5 f% = x% IF barreltoggle% = 0 THEN f% = f% + 26 IF barreltoggle% = 1 THEN f% = f% + 4 k% = 1 56 IF d% < 20 THEN k% = 2: PRINT shot: GOTO 7 d% = d% - 8 PUT (f%, d%), shot, PSET h% = f% hight% = d% hi% = r% + 38 IF h% > hi% - 37 AND h% < hi% - 19 AND d% < 65 AND d% > 35 THEN hit% = hit% + 1: hitshot% = 1: d% = g% - 5: die% = 1 END IF IF hit% = EnemyLife% THEN GOSUB Ending2 END IF IF hit% = 2 AND hitshot% = 1 THEN hitshot% = 0 k% = 2 FOR I% = 46 TO 30 STEP -1 PALETTE 14, I% PLAY "l32n0" FOR j% = 1 TO 30 die% = 0 New% = 520 New1% = 100 NEXT j% NEXT I% END IF IF hit% = 3 AND hitshot% = 1 THEN hitshot% = 0 k% = 2 FOR I% = 30 TO 0 STEP -1 PALETTE 14, I% PLAY "l32n0" FOR j% = 1 TO 30 die% = 0 New% = 520 New1% = 100 NEXT j% NEXT I% END IF IF hit% = 1 AND hitshot% = 1 THEN hitshot% = 0 k% = 2 FOR I% = 63 TO 46 STEP -1 PALETTE 14, I% PLAY "l32n0" FOR j% = 1 TO 30 die% = 0 New% = 520 New1% = 100 NEXT j% NEXT I% END IF GOSUB 23 LOOP UNTIL INKEY$ = CHR$(27) 23 'Enemy AI PUT (r%, l%), Enemy, PSET IF v% = 1 THEN GOTO 76 IF v% = 2 THEN GOTO 67 76 IF r% > 20 OR r% < 480 THEN r% = r% + 2 PUT (r%, l%), Enemy, PSET END IF IF r% = 480 THEN v% = 2 IF ewt% = 1 THEN IF x% < r% - 6 AND x% > r% - 14 THEN Eshot% = 1 'Laser ELSE IF leveltoggle% < 5 THEN cool% = RND * 200 'Random, everything but laser IF leveltoggle% = 5 THEN cool% = RND * 100 IF cool% = 7 THEN Eshot% = 1 'Random, everything but laser 'cool% = cool% + 1 'Everything but laser 'IF cool% = 200 THEN Eshot% = 1 'Everything but laser END IF IF Eshot% = 1 THEN GOSUB Enemyshot 'Everything GOTO 7 67 IF r% > 20 THEN r% = r% - 2 PUT (r%, l%), Enemy, PSET END IF IF r% = 24 THEN v% = 1 IF r% = 400 THEN v% = 2 IF ewt% = 1 THEN IF x% < r% - 6 AND x% > r% - 14 THEN Eshot% = 1 'Laser ELSE cool% = RND * 200 'Random, everything but laser IF cool% = 7 THEN Eshot% = 1 'Random, everything but laser 'cool% = cool% + 1 'Everything but laser 'IF cool% < 200 THEN Eshot% = 0 'Everything but laser 'IF cool% = 200 THEN Eshot% = 1 'Everything but laser END IF IF Eshot% = 1 THEN GOSUB Enemyshot 'Everything GOTO 7 ending: PRINT "Do You Want To Exit Y/N" A$ = UCASE$(INPUT$(1)) IF A$ = "N" THEN GOTO 7 IF A$ = "Y" THEN GOTO 10 ELSE GOSUB ending Ending2: DO rc% = rc% + 1 rr% = RND * 20 + r% rl% = RND * 20 + l% + 30 PSET (rr%, rl%), 0 LOOP UNTIL rc% = 600 CLS FOR I% = 1 TO 63 PALETTE 10, I% LOCATE 10, 20 COLOR 10 PRINT TAB(21); "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»" PRINT TAB(21); "º º" PRINT TAB(21); "º You have beaten level"; leveltoggle%; "!!! º" PRINT TAB(21); "º º" PRINT TAB(21); "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ" NEXT I% PLAY "l2n0" Keyy$ = UCASE$(INPUT$(1)) FOR d% = 63 TO 1 STEP -1 PALETTE 10, d% LOCATE 10, 20 COLOR 10 PRINT TAB(21); "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»" PRINT TAB(21); "º º" PRINT TAB(21); "º You have beaten level"; leveltoggle%; "!!! º " PRINT TAB(21); "º º" PRINT TAB(21); "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ" NEXT d% IF leveltoggle% = 7 THEN BeatGame: GOTO 10 ELSE leveltoggle% = leveltoggle% + 1: GOTO raguExtraChunky END IF Enemyshot: IF loser% = 4 THEN GOTO winner loser% = 4 IF ewt% = 1 THEN PLAY "MB X" + VARPTR$(LaserFX$) 'Laser ELSEIF ewt% = 2 THEN PLAY "MB X" + VARPTR$(PeashooterFX$) 'Peashooter ELSEIF ewt% = 3 THEN PLAY "MB X" + VARPTR$(DrunkFX$) 'Drunk torpedo ELSEIF ewt% = 4 THEN PLAY "MB X" + VARPTR$(HomingFX$) 'Homing missile END IF ex% = r% IF ewt% = 2 THEN ee% = (x% - r%) / 150 'Peashooter ef% = (g% - l%) / 150 'Peashooter ELSE END IF ab = 100 winner: IF etoggle% = 1 THEN etoggle% = 2 ELSEIF etoggle% = 2 THEN etoggle% = 0 ELSE etoggle% = 1 END IF IF etoggle% = 1 OR etoggle% = 2 THEN ec% = 4 IF etoggle% = 0 THEN ec% = 0 IF loser% = 0 THEN ec% = 0 IF etoggle% = 0 THEN FOR s% = 1 TO 2 ab = ab - .5 IF ab < 14 THEN EXIT FOR IF ewt% = 4 THEN ee% = (x% - ex%) / ab 'Homing torpedo ef% = (g% - ey%) / ab 'Homing torpedo > the first IF a few lines down is also homing ELSEIF ewt% = 3 THEN ee% = (x% - r%) / 150 'Drunk torpedo ef% = (g% - l%) / 150 'Drunk torpedo ELSEIF ewt% = 1 THEN ee% = 0 'Laser > the third IF is everything but laser ef% = 8 'Laser > the fourth IF is laser ELSE END IF IF leveltoggle% = 4 THEN FOR hilow% = 1 TO 2 ex% = ex% + ee% ey% = ey% + ef% PUT (ex%, ey%), Eshot, PSET NEXT hilow% ELSE ex% = ex% + ee% ey% = ey% + ef% PUT (ex%, ey%), Eshot, PSET END IF NEXT s% loser% = 4 IF ab < 12 OR ey% > 360 OR ex% < 25 OR ex% > 475 THEN etoggle% = 0: loser% = 0: Eshot% = 0: cool% = 0: Ek% = 1 IF ewt% = 2 OR ewt% = 3 OR ewt% = 4 THEN IF ex% > x% - 10 AND ex% < x% + 22 AND ey% > g% - 15 AND ey% < g% + 10 THEN GOTO 777 ELSE IF ex% > x% AND ex% < x% + 22 AND ey% > g% - 38 AND ey% < g% + 10 THEN GOTO 777 END IF END IF GOTO 7 777 : IF ewt% = 1 THEN LINE (x% - 55, g% - 55)-(x% + 45, g% + 45), 0, BF ELSE LINE (x% - 15, g% - 15)-(x% + 45, g% + 45), 0, BF END IF DO IF q% = 0 THEN q% = 1: c% = 4 ELSEIF q% = 1 THEN q% = 2: c% = 4 ELSEIF q% = 2 THEN q% = 0: c% = 15 END IF pee% = pee% + 1 CIRCLE (x% + 15, g% + 15), 15, 7 PAINT (x% + 15, g% + 15), c%, 7 LOOP UNTIL pee% = 150 DO rc% = rc% + 1 rx% = RND * 40 + x% rg% = RND * 40 + g% PSET (rx%, rg%), 0 LOOP UNTIL rc% = 8000 CLS life% = life% - 1 IF life% < 0 THEN FOR I% = 1 TO 63 PALETTE 10, I% LOCATE 10, 20 COLOR 10 PRINT TAB(21); "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»" PRINT TAB(21); "º º" PRINT TAB(21); "º ): You have been killed :( º" PRINT TAB(21); "º º" PRINT TAB(21); "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ" NEXT I% PLAY "l2n0" Keyy$ = UCASE$(INPUT$(1)) FOR d% = 63 TO 1 STEP -1 PALETTE 10, d% LOCATE 10, 20 COLOR 10 PRINT TAB(21); "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»" PRINT TAB(21); "º º" PRINT TAB(21); "º ): You have been killed :( º" PRINT TAB(21); "º º" PRINT TAB(21); "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ" NEXT d% LostGame GOTO 10 ELSE GOTO raguExtraChunky END IF 10 SCREEN 13 END SUB SUB LostGame DIM Ship(900) g% = 400 x% = 288 Taps$ = "o2l2cl4cl1fl2cl4fl1al2cl4facfacfl1al2al4al1o3co2l2al4fl1cl2cl4cl1f" StarNum% = 300 LNum% = 1 DIM StarX(StarNum%), StarY(StarNum%), Layer(LNum%) LINE (10, 10)-(10, 20), 3 LINE (10, 18)-(20, 15), 3 LINE (25, 20)-(25, 10), 3 LINE (25, 18)-(19, 15), 3 LINE (18, 5)-(18, 15), 2 GET (31, 28)-(2, 1), Ship CLS FOR l = 1 TO LNum% IF l = 1 THEN Layer(l) = 3 IF l = 2 THEN Layer(l) = 4 DO: k$ = "R": LOOP UNTIL k$ = "L" OR k$ = "R" IF k$ = "L" THEN Layer(l) = -Layer(l) PRINT NEXT l PLAY "MB X" + VARPTR$(Taps$) FOR I% = 1 TO StarNum% StarX(I%) = (RND * 619) + 1 StarY(I%) = (RND * 599) + 1 NEXT I% DO FOR I% = 1 TO StarNum% PSET (StarX(I%), StarY(I%)), 0 IF I% > (StarNum% / LNum%) * CL THEN CL = CL + 1 StarX(I%) = StarX(I%) + Layer(CL) IF StarX(I%) < 1 THEN StarX(I%) = 619: StarY(I%) = RND * 619 IF StarX(I%) > 599 THEN StarX(I%) = 1: StarY(I%) = RND * 599 c% = (CL * 4) + 19 PSET (StarX(I%), StarY(I%)), c% NEXT I% IF g% > 20 AND boom% = 0 THEN FOR jkjkj% = 1 TO 3 g% = g% - 2.5 PUT (x%, g%), Ship, PSET NEXT jkjkj% END IF IF g% < 50 AND boom% = 0 THEN DO IF q% = 0 THEN q% = 1: c% = 4 ELSEIF q% = 1 THEN q% = 2: c% = 4 ELSEIF q% = 2 THEN q% = 0: c% = 15 END IF pee% = pee% + 1 CIRCLE (x% + 15, g% + 15), 15, 7 PAINT (x% + 15, g% + 15), c%, 7 LOOP UNTIL pee% = 150 DO rc% = rc% + 1 rx% = RND * 40 + x% rg% = RND * 40 + g% PSET (rx%, rg%), 0 LOOP UNTIL rc% = 8500 boom% = 1 END IF COLOR 15: LOCATE 8, 10 PRINT "I am disappointed with your utter failure in the Nebulatic battle." PRINT " I've seen janitors do better (Space Quest, Moron). In World War II," PRINT " a bad pilot was considered a dead one. Guess where that puts you on" PRINT " the top ten list!" PRINT "" PRINT " Press To Continue" LOOP UNTIL INKEY$ = CHR$(27) IF g% > 20 THEN FOR jkjkj% = 1 TO 3 g% = g% - 2.5 PUT (x%, g%), Ship, PSET NEXT jkjkj% END IF GameEnd% = 1 END SUB SUB Pacman SCREEN 12 DIM Ship(900) DIM shot(800) LINE (10, 10)-(10, 20), 3 'This draws the ship LINE (10, 18)-(20, 15), 3 LINE (25, 20)-(25, 10), 3 LINE (25, 18)-(19, 15), 3 LINE (18, 5)-(18, 15), 2 GET (31, 28)-(2, 1), Ship CLS LINE (2, 5)-(2, 40), 3 GET (1, 70)-(2, 1), shot CLS barney$ = "o2l6gel3gl6gel3gl6ao2l6gel3gl6gel3gl6a" pacx = 320 pacy = 240 h% = 420 g% = 420 x% = 320 s% = 0 CONST ArraySize = 242, NumGraphics = 21 CONST Delay = 700 CONST True = -1, False = NOT True DIM Graphic(0 TO ArraySize * NumGraphics) GOSUB MakeData CLS PLAY "MB X" + VARPTR$(barney$) DO FOR Frame = 0 TO 6 STEP 2 PUT (pacx, pacy), Graphic(Frame * ArraySize), PSET FOR Stall = 0 TO Delay: NEXT IF pacx < 384 THEN pacx = pacx + 3 NEXT IF pacx > 195 AND pacx < 225 THEN GOSUB xwing IF pacx > 225 THEN GOSUB firing FOR Frame = 6 TO 0 STEP -2 PUT (pacx, pacy), Graphic(Frame * ArraySize), PSET FOR Stall = 0 TO Delay: NEXT IF pacx < 386 THEN pacx = pacx + 3 NEXT IF pacx > 195 AND pacx < 225 THEN GOSUB xwing IF pacx > 225 THEN GOSUB firing IF pacx = 386 THEN NumTurns = 0 IF pacx = 10 OR pacy = 10 THEN s% = s% + 1 LOCATE 1, 8: PRINT s% END IF IF pacx > 195 AND pacx < 225 THEN GOSUB xwing IF pacx > 225 THEN GOSUB firing LOOP GOTO ends MakeData: FOR pacx = 1 TO 10 CIRCLE (20, 20), pacx, 14 CIRCLE (21, 20), pacx, 14 NEXT pacx LINE (20, 14)-STEP(2, 1), 0, BF GOSUB SaveGraphic LINE (20, 20)-(31, 20), 0 GOSUB SaveGraphic LINE (20, 20)-(31, 19), 0 LINE (20, 20)-(31, 21), 0 GOSUB SaveGraphic LINE (20, 20)-(31, 18), 0 LINE (20, 20)-(31, 22), 0 GOSUB SaveGraphic LINE (20, 20)-(31, 17), 0 LINE (20, 20)-(31, 23), 0 GOSUB SaveGraphic LINE (20, 20)-(31, 16), 0 LINE (20, 20)-(31, 24), 0 GOSUB SaveGraphic LINE (20, 20)-(31, 15), 0 LINE (20, 20)-(31, 25), 0 GOSUB SaveGraphic SaveGraphic: GET (6, 11)-(32, 29), Graphic(Offset) Offset = Offset + ArraySize RETURN xwing: IF tea% = 1 THEN GOTO tee tea% = 1 GOSUB MMusic tee: IF g% > 360 THEN FOR l = 1 TO 2 g% = g% - 4 PUT (x%, g%), Ship, PSET NEXT END IF PUT (x%, g%), Ship, PSET RETURN firing: IF h% < 255 THEN GOTO ends IF tick% = 1 THEN GOTO ticke tick% = 1 h% = g% + 12 ticke: h% = h% - 15 PUT (x%, h%), shot, PSET RETURN MMusic: Count% = Count% + 1 MBuff$ = "T150L2O2CGP16L16FEDL2>CC "Y" AND A$ <> "N": A$ = "Y": WEND 'IF A$ = "Y" THEN MBuff$ = "T150L2O3CGP16L16FEDL2>CC 1 THEN A% = A% - 1 LOCATE A%, 25: PRINT "Federation Defender" B% = A% + 1 LOCATE B%, 25: PRINT " " END IF IF A% < 2 THEN LOCATE A%, 25: PRINT " " IF s% = 0 THEN LOCATE 10, 1 A$ = " You are the defender of a long time war galaxy. You must defeat the" B$ = "evil aliens from planet Nebulats. Until now, the nebulatic creatures have" c$ = "been winning the war, but now the planet Vanderbet (your home planet) is" d$ = "launching an all-out strike against them. You are the Alpha leader, and" e$ = "your job is to defeat the front lines of the Nebulatic army. Your ship" f$ = "is equipped with Class III Lasers, but can interface with Nebulatic" g$ = "weapons." h$ = "Press To Continue" FOR w = 1 TO LEN(A$): SOUND 200, .1: LOCATE 10, 4: PRINT LEFT$(A$, w): FOR q = 1 TO 500: NEXT q: NEXT FOR w = 1 TO LEN(B$): SOUND 200, .1: LOCATE 11, 4: PRINT LEFT$(B$, w): FOR q = 1 TO 500: NEXT q: NEXT FOR w = 1 TO LEN(c$): SOUND 200, .1: LOCATE 12, 4: PRINT LEFT$(c$, w): FOR q = 1 TO 500: NEXT q: NEXT FOR w = 1 TO LEN(d$): SOUND 200, .1: LOCATE 13, 4: PRINT LEFT$(d$, w): FOR q = 1 TO 500: NEXT q: NEXT FOR w = 1 TO LEN(e$): SOUND 200, .1: LOCATE 14, 4: PRINT LEFT$(e$, w): FOR q = 1 TO 500: NEXT q: NEXT FOR w = 1 TO LEN(f$): SOUND 200, .1: LOCATE 15, 4: PRINT LEFT$(f$, w): FOR q = 1 TO 500: NEXT q: NEXT FOR w = 1 TO LEN(g$): SOUND 200, .1: LOCATE 16, 4: PRINT LEFT$(g$, w): FOR q = 1 TO 500: NEXT q: NEXT COLOR 14: SOUND 440, 1: FOR q = 1 TO 500: NEXT q FOR w = 1 TO LEN(h$): SOUND 240 + w, 1: LOCATE 17, 46: PRINT LEFT$(h$, w): FOR q = 1 TO 500: NEXT q: NEXT PRINT " " s% = 1 END IF END IF IF s% = 2 THEN LOCATE 10, 1: PRINT " " PRINT " " PRINT " " PRINT " " PRINT " " LOCATE 16, 20: PRINT " The Story is not done " END IF CL = 1 FOR I% = 1 TO StarNum% PSET (StarX(I%), StarY(I%)), 0 IF I% > (StarNum% / LNum%) * CL THEN CL = CL + 1 StarX(I%) = StarX(I%) + Layer(CL) IF StarX(I%) < 1 THEN StarX(I%) = 619: StarY(I%) = RND * 619 IF StarX(I%) > 599 THEN StarX(I%) = 1: StarY(I%) = RND * 599 c% = (CL * 4) + 19 PSET (StarX(I%), StarY(I%)), c% NEXT I% PLAY ON LOOP UNTIL INKEY$ = " " GOTO 28 'MuchMusic: Count% = Count% + 1 SELECT CASE Count% CASE 0: MBuff$ = "T150L2O3CGP16L16FEDL2>CC