1: 'Red Baron 2573 (Version 1.1) 2: 'Programmed by Adam Stanchos 3: 'On AOL: AdamS60982 On Prodigy: TCMP46B 4: DECLARE SUB AddBonusPoints (Score%, Ships%) 5: DECLARE SUB LoadImages () 6: DECLARE SUB EnemyPic (Filename$, Xpos%, Ypos%) 7: DECLARE SUB Sunset (rxpos%, rypos%) 8: DECLARE SUB ExtraShipCheck (Score%, Ships%, GainShip%) 9: DECLARE SUB EnMove (n%, ShipType%) 10: DECLARE SUB EnemyShipPicture (n%, ShipType%) 11: DECLARE SUB Statistics (Score%, Ships%) 12: DECLARE SUB ExplosiveSound () 13: DECLARE SUB Explosion (x%, Y%) 14: DECLARE SUB UpRight (x%, Y%) 15: DECLARE SUB UpLeft (x%, Y%) 16: DECLARE SUB DownLeft (x%, Y%) 17: DECLARE SUB DownRight (x%, Y%) 18: DECLARE SUB MoveLeft (x%) 19: DECLARE SUB MoveUp (Y%) 20: DECLARE SUB MoveDown (Y%) 21: DECLARE SUB RedBaron () 22: DECLARE SUB RedShip () 23: DECLARE SUB RedShipMask () 24: DECLARE SUB EFighter () 25: DECLARE SUB EFighterMask () 26: DECLARE SUB EElite () 27: DECLARE SUB EEliteMask () 28: DECLARE SUB ECommandShip () 29: DECLARE SUB ECommandShipMask () 30: DECLARE SUB PrivateASCII () 31: DECLARE SUB MoveRight (x%) 32: DECLARE SUB stars () 33: DECLARE SUB MainScreen (HScore%, ASCII%) 34: DECLARE SUB HelpScreen () 35: DECLARE SUB Intro () 36: DECLARE SUB Conclusion () 37: DECLARE SUB Keypad () 38: DECLARE SUB Title () 39: DECLARE SUB PlaceEShip (x%, Y%, ELXC%, ELYC%, NumberofShips%, ShipType%, OutOf%, Score%, Ships%, LostAShip%) 40: DECLARE SUB Update (x%, Y%, ELXC%, ELYC%, NumberofShips%, ShipType%, Score%, Ships%, LostAShip%) 41: DECLARE SUB Shoot (x%, Y%, RangeLeft%, RangeRight%, NumberofShips%, ShipType%, Score%, ShipPoints%, Hits%, TempHits%, HitsTotal%, Defeated%, Ships%, GainShip%) 42: DECLARE SUB EShoot (n%, x%, Y%, ELXC%, ELYC%, ShipType%, Ships%, LostAShip%) 43: DECLARE SUB WaveSetup (Wave%, ASCII%, RangeLeft%, RangeRight%, ELXC%, ELYC%, ShipPoints%, ShipType%, OutOf%, Hits%, HitsTotal%) 44: DECLARE SUB WaveInfo (Wave%, NumberofShips%, Score%, Ships%) 45: DECLARE SUB YouLose (Score%, Ships%) 46: DEFINT A-Z 47: SCREEN 7, 0, 2, 0 48: DEF SEG = &HA000 49: DIM SHARED RBaron%(1 TO 6000), RBaronMask%(1 TO 6000) 50: DIM SHARED RShip%(1 TO 500), RShipMask%(1 TO 500) 51: DIM SHARED EFShip%(1 TO 500), EFShipMask%(1 TO 500) 52: DIM SHARED ESShip%(1 TO 500), ESShipMask%(1 TO 500) 53: DIM SHARED EEShip%(1 TO 500), EEShipMask%(1 TO 500) 54: DIM SHARED ECShip%(1 TO 1500), ECShipMask%(1 TO 1500) 55: DIM SHARED EICShip%(1 TO 1500), EICShipMask%(1 TO 1500) 56: DIM SHARED ASCII%(1 TO 500) 57: CALL LoadImages 58: CALL PrivateASCII 59: DEF FNR (x) = INT(RND * x) + 1 60: DIM SHARED SX(20), SY(20), ST(20) 61: FOR I = 1 TO 20 'sprinkle some stars 62: SX(I) = FNR(319): SY(I) = FNR(199) 63: ST(I) = FNR(2) 64: NEXT 65: DIM SHARED EX(5), EY(5), Laser(5), Enemy(5), Eshot(5) 66: DIM SHARED TempHits(5) 67: HScore% = 0 68: SCREEN 7, 0, 1, 0 69: LetsStart: 70: CLS 71: Score% = 0: Ships% = 3: x% = 150: Y% = 170: ASCII% = 0 72: Defeated = 0: Wave = 1: GainShip = 0 73: CALL MainScreen(HScore%, ASCII%) 74: DetermineWave: 75: IF Ships% < 1 AND Score% > HScore% THEN 76: HScore% = Score% 77: END IF 78: IF Ships% < 1 THEN 79: CALL YouLose(Score%, Ships%): GOTO LetsStart 80: END IF 81: IF Wave > 50 THEN 82: PLAY "o2 l4e l8d e l2 g" 83: CALL AddBonusPoints(Score, Ships) 84: CALL Conclusion 85: IF Score% > HScore% THEN HScore% = Score% 86: GOTO LetsStart 87: END IF 88: '------ 89: CALL WaveSetup(Wave, ASCII, RangeLeft, RangeRight, ELXC, ELYC, ShipPoints, ShipType, OutOf, Hits, HitsTotal) 90: CALL WaveInfo(Wave, NumberofShips, Score%, Ships%) 91: FOR n = 1 TO NumberofShips 92: Laser(n) = -10: Enemy(n) = 1: EY(n) = 29: Eshot(n) = 0 93: TempHits(n) = Hits 94: NEXT 95: EX(1) = 137: EX(2) = 90: EX(3) = 200: EX(4) = 40 96: EX(5) = 250: x% = 140: Y% = 170: RANDOMIZE TIMER 97: GOTO Update 98: 99: KeyboardInput: 100: CALL PlaceEShip(x, Y, ELXC, ELYC, NumberofShips, ShipType, OutOf, Score, Ships, LostAShip) 101: IF LostAShip = 1 THEN 102: LostAShip = 0: Defeated = 0: CALL Explosion(x%, Y%): GOTO DetermineWave 103: END IF 104: IF Defeated = NumberofShips THEN 105: Defeated = 0: Wave = Wave + 1: GOTO DetermineWave 106: END IF 107: A$ = INKEY$ 108: IF A$ = CHR$(0) + CHR$(77) THEN 109: CALL MoveRight(x%): GOTO Update 110: END IF 111: IF A$ = CHR$(0) + CHR$(75) THEN 112: CALL MoveLeft(x%): GOTO Update 113: END IF 114: IF A$ = CHR$(0) + CHR$(72) THEN 115: CALL MoveUp(Y%): GOTO Update 116: END IF 117: IF A$ = CHR$(0) + CHR$(80) THEN 118: CALL MoveDown(Y%): GOTO Update 119: END IF 120: IF A$ = CHR$(0) + CHR$(73) THEN 121: CALL UpRight(x%, Y%): GOTO Update 122: END IF 123: IF A$ = CHR$(0) + CHR$(71) THEN 124: CALL UpLeft(x%, Y%): GOTO Update 125: END IF 126: IF A$ = CHR$(0) + CHR$(79) THEN 127: CALL DownLeft(x%, Y%): GOTO Update 128: END IF 129: IF A$ = CHR$(0) + CHR$(81) THEN 130: CALL DownRight(x%, Y%): GOTO Update 131: END IF 132: IF A$ = CHR$(32) THEN CALL Shoot(x, Y, RangeLeft, RangeRight, NumberofShips, ShipType, Score, ShipPoints, Hits, TempHits, HitsTotal, Defeated, Ships, GainShip) 133: IF A$ = "q" OR A$ = "Q" THEN Ships% = 0: GOTO DetermineWave 134: GOTO KeyboardInput 135: 136: Update: 137: SCREEN 7, 0, 1, 0 138: CLS 139: CALL stars 140: PUT (x%, Y%), RShipMask%, AND 141: PUT (x%, Y%), RShip%, XOR 142: FOR n = 1 TO NumberofShips 143: IF Enemy(n) = 0 THEN GOTO DoneWithIt 144: CALL EnemyShipPicture(n, ShipType) 145: IF Eshot(n) = 1 THEN CALL EShoot(n, x, Y, ELXC, ELYC, ShipType, Ships, LostAShip) 'lasers be shown? 146: DoneWithIt: 147: NEXT 148: CALL Statistics(Score%, Ships%) 149: SCREEN 7, 0, 0, 0: PCOPY 1, 0 150: IF LostAShip = 1 THEN 151: LostAShip = 0: Defeated = 0: CALL Explosion(x%, Y%): GOTO DetermineWave 152: END IF 153: GOTO KeyboardInput 154: 155: SUB AddBonusPoints (Score, Ships) 156: Bonus = Ships% * 100 157: Score% = Score% + Bonus 158: FOR times = 1 TO 100 159: SCREEN 7, 0, 1, 0 160: CLS 161: CALL stars 162: LOCATE 12, 11: COLOR 12: PRINT "Ships" 163: LOCATE 12, 29: COLOR 7: PRINT Ships% 164: LOCATE 14, 11: COLOR 12: PRINT "Bonus" 165: LOCATE 14, 26: COLOR 7: PRINT "x 100" 166: LINE (200, 115)-(238, 115), 11 167: LOCATE 16, 11: COLOR 12: PRINT "Final Score" 168: LOCATE 16, 26: COLOR 15: PRINT Score% 169: CALL Statistics(Score%, Ships%) 170: SCREEN 7, 0, 0, 0: PCOPY 1, 0 171: NEXT 172: END SUB 173: 174: SUB Conclusion 175: rxpos = 300: rypos = 80 176: Conc1: 177: FOR pause = 1 TO 10000: NEXT 178: SCREEN 7, 0, 1, 0 179: CLS : CALL Sunset(rxpos, rypos) 180: LOCATE 17, 1: COLOR 7 181: PRINT " Successfully destroying the evil" 182: PRINT "Vordoxian fleet, you return to Earth." 183: PRINT "Crowds cheer as they see your ship" 184: PRINT "flying through the evening sky," 185: PRINT "realizing that the earth has been" 186: PRINT "saved by the Red Baron!" 187: SCREEN 7, 0, 0, 0: PCOPY 1, 0 188: A$ = INKEY$ 189: IF A$ = CHR$(13) THEN GOTO ConclusionDone 190: GOTO Conc1 191: ConclusionDone: 192: END SUB 193: 194: SUB DownLeft (x%, Y%) 195: x% = x% - 5: Y% = Y% + 5 196: IF x% < 20 THEN x% = 20 197: IF Y% > 170 THEN Y% = 170 198: END SUB 199: 200: SUB DownRight (x%, Y%) 201: x% = x% + 5: Y% = Y% + 5 202: IF x% > 250 THEN x% = 250 203: IF Y% > 170 THEN Y% = 170 204: END SUB 205: 206: SUB EnemyPic (Filename$, Xpos, Ypos) 207: DIM Vordoxians%(1 TO 6000) 208: DEF SEG = VARSEG(Vordoxians%(1)) 209: BLOAD Filename$, VARPTR(Vordoxians%(1)) 210: PUT (Xpos, Ypos), Vordoxians%, PSET 211: END SUB 212: 213: SUB EnemyShipPicture (n, ShipType) 214: IF ShipType = 1 THEN 215: PUT (EX(n), EY(n)), EFShipMask%, AND 216: PUT (EX(n), EY(n)), EFShip%, XOR 217: END IF 218: IF ShipType = 2 THEN 219: PUT (EX(n), EY(n)), ESShipMask%, AND 220: PUT (EX(n), EY(n)), ESShip%, XOR 221: END IF 222: IF ShipType = 3 THEN 223: PUT (EX(n), EY(n)), ECShipMask%, AND 224: PUT (EX(n), EY(n)), ECShip%, XOR 225: END IF 226: IF ShipType = 4 THEN 227: PUT (EX(n), EY(n)), EEShipMask%, AND 228: PUT (EX(n), EY(n)), EEShip%, XOR 229: END IF 230: IF ShipType = 5 THEN 231: PUT (EX(n), EY(n)), ASCII%, PSET 232: END IF 233: IF ShipType = 6 THEN 234: PUT (EX(n), EY(n)), EICShipMask%, AND 235: PUT (EX(n), EY(n)), EICShip%, XOR 236: END IF 237: END SUB 238: 239: SUB EnMove (n, ShipType) 240: Direction = INT(RND * 8) + 1 241: IF Direction = 1 THEN EY(n) = EY(n) - 5 242: IF Direction = 2 THEN EX(n) = EX(n) + 5: EY(n) = EY(n) - 5 243: IF Direction = 3 THEN EX(n) = EX(n) + 5 244: IF Direction = 4 THEN EX(n) = EX(n) + 5: EY(n) = EY(n) + 5 245: IF Direction = 5 THEN EY(n) = EY(n) - 5 246: IF Direction = 6 THEN EX(n) = EX(n) - 5: EY(n) = EY(n) + 5 247: IF Direction = 7 THEN EX(n) = EX(n) - 5 248: IF Direction = 8 THEN EX(n) = EX(n) - 5: EY(n) = EY(n) - 5 249: IF EX(n) < 20 THEN EX(n) = 20 250: IF EX(n) > 250 THEN EX(n) = 250 251: IF ShipType = 3 AND EX(n) > 200 THEN EX(n) = 200 252: IF ShipType = 6 AND EX(n) > 200 THEN EX(n) = 200 253: IF EY(n) < 15 THEN EY(n) = 15 254: IF EY(n) > 100 THEN EY(n) = 100 255: END SUB 256: 257: SUB EShoot (n, x, Y, ELXC, ELYC, ShipType, Ships, LostAShip) 258: LINE (EX(n) + 2, Laser(n))-(EX(n) + 2, Laser(n) + 5), 4 259: LINE (EX(n) + ELXC, Laser(n))-(EX(n) + ELXC, Laser(n) + 5), 4 260: IF Eshot(n) = 1 AND EX(n) + 2 > x - 1 AND EX(n) + 2 < x + 35 AND Laser(n) > Y - 1 AND Laser(n) < Y + 14 THEN 261: Ships% = Ships% - 1: LostAShip = 1: GOTO EShootDone 262: END IF 'right laser cannon 263: 264: IF Eshot(n) = 1 AND EX(n) + ELXC > x - 1 AND EX(n) + ELXC < x + 35 AND Laser(n) > Y - 1 AND Laser(n) < Y + 14 THEN 265: Ships% = Ships% - 1: LostAShip = 1: GOTO EShootDone 266: END IF 'left laser cannon 267: IF ShipType = 3 OR ShipType = 6 THEN GOSUB ExtraShoot 268: IF Eshot(n) = 1 AND Laser(n) > 209 THEN Eshot(n) = 0 269: GOTO EShootDone 270: 271: ExtraShoot: 272: LINE (EX(n) + 17, Laser(n))-(EX(n) + 17, Laser(n) + 5), 1 273: LINE (EX(n) + 73, Laser(n))-(EX(n) + 73, Laser(n) + 5), 1 274: IF Eshot(n) = 1 AND EX(n) + 17 > x - 1 AND EX(n) + 2 < x + 35 AND Laser(n) > Y - 1 AND Laser(n) < Y + 14 THEN 275: Ships% = Ships% - 1: LostAShip = 1: RETURN 276: END IF 'right laser cannon 277: 278: IF Eshot(n) = 1 AND EX(n) + 73 > x - 1 AND EX(n) + 73 < x + 35 AND Laser(n) > Y - 1 AND Laser(n) < Y + 14 THEN 279: Ships% = Ships% - 1: LostAShip = 1: RETURN 280: END IF 'left laser cannon 281: IF Eshot(n) = 1 AND Laser(n) > 209 THEN Eshot(n) = 0 282: RETURN 283: 284: EShootDone: 285: END SUB 286: 287: SUB Explosion (x%, Y%) 288: FOR Grow = 1 TO 5 289: CIRCLE (x + 17, Y + 6), Grow, 14: NEXT 290: CALL ExplosiveSound 291: FOR Grow = 6 TO 8 292: CIRCLE (x + 17, Y + 6), Grow, 12: NEXT 293: FOR Grow = 9 TO 10 294: CIRCLE (x + 17, Y + 6), Grow, 4: NEXT 295: END SUB 296: 297: SUB ExplosiveSound 298: FOR s = 850 TO 810 STEP -1 299: SOUND (RND * 100 + s / 10 + 30), .1 300: NEXT 301: END SUB 302: 303: SUB ExtraShipCheck (Score%, Ships%, GainShip%) 304: IF Score% >= 100 AND GainShip = 0 THEN 305: Ships% = Ships% + 1: GainShip = 1 306: GOSUB Toon: GOTO OutCheck 307: END IF 308: IF Score% >= 200 AND GainShip = 1 THEN 309: Ships% = Ships% + 1: GainShip = 2 310: GOSUB Toon: GOTO OutCheck 311: END IF 312: IF Score% >= 300 AND GainShip = 2 THEN 313: Ships% = Ships% + 1: GainShip = 3 314: GOSUB Toon: GOTO OutCheck 315: END IF 316: IF Score% >= 400 AND GainShip = 3 THEN 317: Ships% = Ships% + 1: GainShip = 4 318: GOSUB Toon: GOTO OutCheck 319: END IF 320: IF Score% >= 500 AND GainShip = 4 THEN 321: Ships% = Ships% + 1: GainShip = 5 322: GOSUB Toon: GOTO OutCheck 323: END IF 324: GOTO OutCheck 325: Toon: 326: PLAY "mbo2l16ddeeffgg": RETURN 327: OutCheck: 328: END SUB 329: 330: SUB HelpScreen 331: HelpPart1: 332: SCREEN 7, 0, 1, 0 333: CLS : LOCATE 25, 1: COLOR 5 334: PRINT "Press to exit or for next page." 335: LOCATE 25, 7: COLOR 11: PRINT "ESC" 336: LOCATE 1, 1: COLOR 12: PRINT "Instructions" 337: LOCATE 1, 30: COLOR 15: PRINT "Page 1 of 3" 338: LINE (0, 9)-(319, 9), 4 339: LOCATE 3, 1: COLOR 15 340: PRINT "Blast your way through fifty waves of" 341: LOCATE 4, 1: PRINT "Vordoxian scum to save the earth!" 342: PUT (10, 48), RShip%, PSET 343: PUT (15, 121), EFShip%, PSET 344: LOCATE 8, 24: COLOR 14: PRINT "The Red Baron" 345: LOCATE 10, 1: COLOR 7 346: PRINT "Your fighter. Armed with the latest in" 347: PRINT "laser technology, the Red Baron's dual" 348: PRINT "laser cannons will cut through an enemy" 349: PRINT "fighter craft like a chainsaw through" 350: PRINT "a teenager! Or so I've heard..." 351: LOCATE 17, 20: COLOR 14: PRINT "Vordoxian Fighter" 352: LOCATE 19, 1: COLOR 7 353: PRINT "The most common type of space craft" 354: PRINT "employed by the enemy. These ships" 355: PRINT "are armed with two laser cannons," 356: PRINT "although not nearly as powerful as" 357: PRINT "the Red Baron's." 358: LOCATE 23, 19: COLOR 3: PRINT "(5 points)" 359: LINE (173, 188)-(183, 198), 4, B 360: PAINT (174, 189), 12, 4: LINE (178, 190)-(178, 196), 0 361: LINE (177, 195)-(179, 195), 0 362: LINE (176, 194)-(180, 194), 0 363: PSET (182, 189), 15 364: SCREEN 7, 0, 0, 0: PCOPY 1, 0 365: UserInput2: 366: A$ = INKEY$ 367: IF A$ = CHR$(0) + CHR$(80) THEN GOTO HelpPart2 368: IF A$ = CHR$(27) THEN GOTO HelpDone 369: GOTO UserInput2 370: HelpPart2: 371: SCREEN 7, 0, 1, 0 372: CLS : LOCATE 25, 3: COLOR 5 373: PRINT "Press to exit or or ." 374: LOCATE 25, 9: COLOR 11: PRINT "ESC" 375: LOCATE 1, 1: COLOR 12: PRINT "Instructions" 376: LOCATE 1, 30: COLOR 15: PRINT "Page 2 of 3" 377: LINE (0, 9)-(319, 9), 4 378: PUT (15, 13), ESShip%, PSET 379: 380: LOCATE 3, 20: COLOR 14: PRINT "Vordoxian Striker" 381: LOCATE 5, 1: COLOR 7 382: PRINT "The pilots of these ships are a little" 383: PRINT "more trigger happy than the norm." 384: PRINT "Always joined by fellow striking ships," 385: PRINT "they will often fire in sync." 386: LOCATE 9, 1: COLOR 3: PRINT "(10 points)" 387: LOCATE 12, 14: COLOR 14: PRINT "Vordoxian Elite Fighter" 388: LOCATE 14, 1: COLOR 7 389: PRINT "Not only do they fire like the Vordoxian" 390: PRINT "Striker, but these ships also carry a" 391: PRINT "deflector battery which reduce damage." 392: LOCATE 17, 1: COLOR 3: PRINT "(20 points)" 393: LOCATE 19, 3: COLOR 9: PRINT "?" 394: LOCATE 19, 5: COLOR 10: PRINT "?" 395: LOCATE 19, 12: COLOR 14: PRINT "Vordoxian Command Vessels" 396: LOCATE 21, 1: COLOR 7 397: PRINT "Chances are, the command ships leading" 398: PRINT "the Vordoxian fleet are pretty powerful." 399: LOCATE 23, 1: COLOR 3: PRINT "(Depending on type, 50 or 100 points)" 400: LINE (188, 188)-(198, 198), 4, B 401: PAINT (189, 189), 12, 4: LINE (193, 190)-(193, 196), 0 402: LINE (192, 191)-(194, 191), 0 403: LINE (191, 192)-(195, 192), 0 404: PSET (197, 189), 15 405: LINE (248, 188)-(258, 198), 4, B 406: PAINT (249, 189), 12, 4: LINE (253, 190)-(253, 196), 0 407: LINE (252, 194)-(254, 194), 0 408: LINE (251, 193)-(255, 193), 0 409: PSET (257, 189), 15 410: SCREEN 7, 0, 0, 0: PCOPY 1, 0 411: UserInput3: 412: A$ = INKEY$ 413: IF A$ = CHR$(0) + CHR$(80) THEN GOTO HelpPart3 414: IF A$ = CHR$(0) + CHR$(72) THEN GOTO HelpPart1 415: IF A$ = CHR$(27) THEN GOTO HelpDone 416: GOTO UserInput3 417: HelpPart3: 418: SCREEN 7, 0, 1, 0 419: CLS : LOCATE 25, 1: COLOR 5 420: PRINT "Press to exit or for prev page." 421: LOCATE 25, 7: COLOR 11: PRINT "ESC" 422: LOCATE 1, 1: COLOR 12: PRINT "Instructions" 423: LOCATE 1, 30: COLOR 15: PRINT "Page 3 of 3" 424: LINE (0, 9)-(319, 9), 4 425: CALL Keypad 426: LOCATE 5, 10: COLOR 7 427: PRINT "Although you can use the" 428: LOCATE 6, 10: PRINT "separate arrow keys, it's" 429: LOCATE 7, 10: PRINT "recommended that you use" 430: LOCATE 8, 10: PRINT "the keypad, as this will" 431: LOCATE 9, 10: PRINT "allow you to move in all" 432: LOCATE 10, 10: PRINT "eight directions." 433: LOCATE 15, 1: PRINT "Press the" 434: LOCATE 15, 11: COLOR 15: PRINT "SPACE BAR" 435: LOCATE 15, 21: COLOR 7: PRINT "to fire." 436: COLOR 3 437: LOCATE 11, 10: PRINT "(Number Lock must be off.)" 438: LOCATE 17, 1: COLOR 7 439: PRINT "For every 100 points, up to 500, you" 440: PRINT "will receive an extra ship." 441: LOCATE 20, 1: COLOR 7 442: PRINT "If you wish to end the game while" 443: PRINT "playing, just press `" 444: LOCATE 21, 22: COLOR 15: PRINT "q" 445: LOCATE 21, 23: COLOR 7: PRINT "' to quit." 446: LOCATE 23, 1: COLOR 3: PRINT "Programmed by Adam Stanchos" 447: LINE (173, 188)-(183, 198), 4, B 448: PAINT (174, 189), 12, 4: LINE (178, 190)-(178, 196), 0 449: LINE (177, 191)-(179, 191), 0 450: LINE (176, 192)-(180, 192), 0 451: PSET (182, 189), 15 452: SCREEN 7, 0, 0, 0: PCOPY 1, 0 453: UserInput4: 454: A$ = INKEY$ 455: IF A$ = CHR$(0) + CHR$(72) THEN GOTO HelpPart2 456: IF A$ = CHR$(27) THEN GOTO HelpDone 457: GOTO UserInput4 458: HelpDone: 459: END SUB 460: 461: SUB Intro 462: Intro1: 463: SCREEN 7, 0, 1, 0 464: CLS : CALL RedBaron: LOCATE 17, 1: COLOR 7 465: PRINT " The Red Baron. That is what the" 466: PRINT "media has called it. The vigilante" 467: PRINT "space craft has been known to appear" 468: PRINT "in distant areas of space, aiding small" 469: PRINT "colonies in defense from pirates and" 470: PRINT "scavengers." 471: SCREEN 7, 0, 0, 0: PCOPY 1, 0 472: A$ = INKEY$ 473: IF A$ = CHR$(13) THEN GOTO Intro2 474: GOTO Intro1 475: Intro2: 476: SCREEN 7, 0, 1, 0 477: CLS : CALL RedBaron: LOCATE 17, 1: COLOR 7 478: PRINT " No one knows who the pilot is." 479: PRINT "A He? She? It? The authorities have" 480: PRINT "been desparate to catch the pilot." 481: PRINT "Even more so now than before due to" 482: PRINT "the recent events..." 483: SCREEN 7, 0, 0, 0: PCOPY 1, 0 484: A$ = INKEY$ 485: IF A$ = CHR$(13) THEN GOTO Intro3 486: GOTO Intro2 487: Intro3: 488: SCREEN 7, 0, 1, 0 489: CLS : LOCATE 17, 1: COLOR 7 490: PRINT " An alien race, known as the" 491: PRINT "Vordoxians, has declared war on mankind." 492: PRINT "Their first attack was swift and deadly." 493: PRINT "Capturing a distant communications" 494: PRINT "outpost, the Vordoxians released the" 495: PRINT "most powerful computer virus ever known" 496: PRINT "to man." 497: SwitchPicture1: 498: Filename$ = "RBVORDOX.ABS" 499: Xpos = 70: Ypos = 20 500: CALL EnemyPic(Filename$, Xpos, Ypos) 501: SCREEN 7, 0, 0, 0: PCOPY 1, 0 502: I3: 503: A$ = INKEY$ 504: IF A$ = CHR$(13) THEN GOTO Intro4 505: GOTO I3 506: Intro4: 507: SCREEN 7, 0, 1, 0 508: CLS : LOCATE 17, 1: COLOR 7 509: PRINT " The virus infected everything." 510: PRINT "No matter how well secure the system," 511: PRINT "the computer virus was able to penetrate" 512: PRINT "its defenses. After only twentyfour" 513: PRINT "hours, virtually everything electronic" 514: PRINT "was rendered useless." 515: Filename$ = "RBVORDOX.ABS" 516: Xpos = 70: Ypos = 20 517: CALL EnemyPic(Filename$, Xpos, Ypos) 518: SCREEN 7, 0, 0, 0: PCOPY 1, 0 519: I4: 520: A$ = INKEY$ 521: IF A$ = CHR$(13) THEN GOTO Intro5 522: GOTO I4 523: Intro5: 524: SCREEN 7, 0, 1, 0 525: CLS : LOCATE 17, 1: COLOR 7 526: PRINT " Astronomers, using nothing more" 527: PRINT "than simple telescopes, then discovered" 528: PRINT "the second part in this evil attack." 529: PRINT "Hordes of Vordoxian fighters had been" 530: PRINT "sighted entering Earth's solar system!" 531: PRINT "Without a solid defense after the virus" 532: PRINT "the end of the Human race was eminent." 533: SwitchPicture2: 534: Filename$ = "RBHORDE.ABS" 535: Xpos = 35: Ypos = 20 536: CALL EnemyPic(Filename$, Xpos, Ypos) 537: SCREEN 7, 0, 0, 0: PCOPY 1, 0 538: I5: 539: A$ = INKEY$ 540: IF A$ = CHR$(13) THEN GOTO Intro6 541: GOTO I5 542: Intro6: 543: SCREEN 7, 0, 1, 0 544: CLS : CALL RedBaron: LOCATE 17, 1: COLOR 7 545: PRINT " Then miraculously, the Red Baron" 546: PRINT "was sighted! Somehow escaping the" 547: PRINT "clutches of the Vordoxian computer" 548: PRINT "virus, the red ship was seen heading" 549: PRINT "on an intercept course for the enemy." 550: PRINT "Now the Red Baron was the last hope" 551: PRINT "for the Human race..." 552: SCREEN 7, 0, 0, 0: PCOPY 1, 0 553: A$ = INKEY$ 554: IF A$ = CHR$(13) THEN GOTO IntroDone 555: GOTO Intro6 556: IntroDone: 557: END SUB 558: 559: SUB Keypad 560: LINE (10, 35)-(20, 45), 8, B: PAINT (11, 36), 7, 8 561: LINE (22, 35)-(32, 45), 8, B: PAINT (23, 36), 7, 8 562: LINE (34, 35)-(44, 45), 8, B: PAINT (35, 36), 7, 8 563: LINE (46, 35)-(56, 45), 8, B: PAINT (47, 36), 7, 8 564: LINE (46, 47)-(56, 69), 8, B: PAINT (47, 48), 7, 8 565: LINE (46, 71)-(56, 93), 8, B: PAINT (47, 73), 7, 8 566: LINE (10, 83)-(32, 93), 8, B: PAINT (11, 84), 7, 8 567: LINE (34, 83)-(44, 93), 8, B: PAINT (35, 84), 7, 8 568: LINE (10, 47)-(20, 57), 7, B: PAINT (11, 48), 15, 7 569: LINE (22, 47)-(32, 57), 7, B: PAINT (23, 48), 15, 7 570: LINE (34, 47)-(44, 57), 7, B: PAINT (35, 48), 15, 7 571: LINE (10, 59)-(20, 69), 7, B: PAINT (11, 60), 15, 7 572: LINE (22, 59)-(32, 69), 7, B: PAINT (23, 60), 15, 7 573: LINE (34, 59)-(44, 69), 7, B: PAINT (35, 60), 15, 7 574: LINE (10, 71)-(20, 81), 7, B: PAINT (11, 72), 15, 7 575: LINE (22, 71)-(32, 81), 7, B: PAINT (23, 72), 15, 7 576: LINE (34, 71)-(44, 81), 7, B: PAINT (35, 72), 15, 7 577: LINE (13, 50)-(17, 54), 0 578: LINE (13, 51)-(14, 50), 0: LINE (13, 52)-(15, 50), 0 579: LINE (27, 50)-(27, 54), 0 580: LINE (26, 51)-(28, 51), 0: LINE (25, 52)-(29, 52), 0 581: LINE (37, 54)-(41, 50), 0 582: LINE (40, 50)-(41, 51), 0: LINE (39, 50)-(41, 52), 0 583: LINE (13, 64)-(17, 64), 0 584: LINE (14, 63)-(14, 65), 0: LINE (15, 62)-(15, 66), 0 585: LINE (37, 64)-(41, 64), 0 586: LINE (40, 63)-(40, 65), 0: LINE (39, 62)-(39, 66), 0 587: LINE (13, 78)-(17, 74), 0 588: LINE (13, 77)-(14, 78), 0: LINE (13, 76)-(15, 78), 0 589: LINE (27, 74)-(27, 78), 0 590: LINE (26, 77)-(28, 77), 0: LINE (25, 76)-(29, 76), 0 591: LINE (37, 74)-(41, 78), 0 592: LINE (40, 78)-(41, 77), 0: LINE (39, 78)-(41, 76), 0 593: END SUB 594: 595: SUB LoadImages 596: DEF SEG = VARSEG(RBaron%(1)) 597: BLOAD "RBSHIP.ABS", VARPTR(RBaron%(1)) 598: DEF SEG = VARSEG(RBaronMask%(1)) 599: BLOAD "RBSHIPM.ABS", VARPTR(RBaronMask%(1)) 600: DEF SEG = VARSEG(RShip%(1)) 601: BLOAD "RB1.ABS", VARPTR(RShip%(1)) 602: DEF SEG = VARSEG(RShipMask%(1)) 603: BLOAD "RB2.ABS", VARPTR(RShipMask%(1)) 604: DEF SEG = VARSEG(EFShip%(1)) 605: BLOAD "VF1.ABS", VARPTR(EFShip%(1)) 606: DEF SEG = VARSEG(EFShipMask%(1)) 607: BLOAD "VF2.ABS", VARPTR(EFShipMask%(1)) 608: DEF SEG = VARSEG(ESShip%(1)) 609: BLOAD "VS1.ABS", VARPTR(ESShip%(1)) 610: DEF SEG = VARSEG(ESShipMask%(1)) 611: BLOAD "VS2.ABS", VARPTR(ESShipMask%(1)) 612: DEF SEG = VARSEG(EEShipMask%(1)) 613: BLOAD "VE2.ABS", VARPTR(EEShipMask%(1)) 614: DEF SEG = VARSEG(ECShip%(1)) 615: BLOAD "VC1.ABS", VARPTR(ECShip%(1)) 616: DEF SEG = VARSEG(ECShipMask%(1)) 617: BLOAD "VC2.ABS", VARPTR(ECShipMask%(1)) 618: DEF SEG = VARSEG(EICShip%(1)) 619: BLOAD "VIC1.ABS", VARPTR(EICShip%(1)) 620: DEF SEG = VARSEG(EICShipMask%(1)) 621: BLOAD "VIC2.ABS", VARPTR(EICShipMask%(1)) 622: END SUB 623: 624: SUB MainScreen (HScore%, ASCII%) 625: Start: 626: SCREEN 7, 0, 1, 0 627: CLS : CALL Title 628: LOCATE 12, 16: COLOR 9: PRINT "High Score:" 629: LOCATE 13, 15: COLOR 11: PRINT HScore% 630: LINE (90, 120)-(229, 183), 4, B 631: LINE (91, 121)-(228, 182), 12, B 632: LINE (92, 122)-(227, 181), 4, B 633: COLOR 11: LOCATE 17, 18: PRINT "Select:" 634: C1 = 15: C2 = 4: C3 = 4: C4 = 4 635: highlight = 1 636: SCREEN 7, 0, 0, 0: PCOPY 1, 0 637: DisplayText1: 638: COLOR C1: LOCATE 19, 15: PRINT "Introduction" 639: COLOR C2: LOCATE 20, 16: PRINT "Play Game" 640: COLOR C3: LOCATE 21, 19: PRINT "Help" 641: COLOR C4: LOCATE 22, 19: PRINT "Quit" 642: 643: UserInput1: 644: A$ = INKEY$ 645: IF A$ = CHR$(0) + CHR$(72) THEN 646: highlight = highlight - 1: GOTO HightOfMyLight1 647: END IF 648: IF A$ = CHR$(0) + CHR$(80) THEN 649: highlight = highlight + 1: GOTO HightOfMyLight1 650: END IF 651: IF A$ = CHR$(13) THEN GOTO DetermineSelection1 652: IF A$ = "a" OR A$ = "A" THEN ASCII% = 1 653: GOTO UserInput1 654: 655: HightOfMyLight1: 656: IF highlight > 4 THEN highlight = 1 657: IF highlight < 1 THEN highlight = 4 658: IF highlight = 1 THEN C1 = 15: C2 = 4: C3 = 4: C4 = 4 659: IF highlight = 2 THEN C2 = 15: C1 = 4: C3 = 4: C4 = 4 660: IF highlight = 3 THEN C3 = 15: C1 = 4: C2 = 4: C4 = 4 661: IF highlight = 4 THEN C4 = 15: C1 = 4: C2 = 4: C3 = 4 662: GOTO DisplayText1 663: 664: DetermineSelection1: 665: IF highlight = 1 THEN CALL Intro: GOTO Start 666: IF highlight = 2 THEN GOTO Done1 667: IF highlight = 3 THEN CALL HelpScreen: GOTO Start 668: IF highlight = 4 THEN CLS : SYSTEM 669: GOTO DisplayText1 670: Done1: 671: END SUB 672: 673: SUB MoveDown (Y%) 674: Y% = Y% + 5 675: IF Y% > 170 THEN Y% = 170 676: END SUB 677: 678: SUB MoveLeft (x%) 679: x% = x% - 5 680: IF x% < 20 THEN x% = 20 681: END SUB 682: 683: SUB MoveRight (x%) 684: x% = x% + 5 685: IF x% > 250 THEN x% = 250 686: END SUB 687: 688: SUB MoveUp (Y%) 689: Y% = Y% - 5 690: IF Y% < 100 THEN Y% = 100 691: END SUB 692: 693: SUB PlaceEShip (x, Y, ELXC, ELYC, NumberofShips, ShipType, OutOf, Score, Ships, LostAShip) 694: SCREEN 7, 0, 1, 0 695: CLS 696: CALL stars 697: FOR n = 1 TO NumberofShips 698: IF Enemy(n) = 0 THEN GOTO DoneWithShip2 699: CALL EnMove(n, ShipType) 700: CALL EnemyShipPicture(n, ShipType) 701: IF Eshot(n) = 1 THEN 702: Laser(n) = Laser(n) + 5: CALL EShoot(n, x, Y, ELXC, ELYC, ShipType, Ships, LostAShip) 703: END IF 704: Doesitshoot = INT(RND * OutOf) + 1 705: IF Doesitshoot = 1 AND Eshot(n) = 0 THEN 706: Eshot(n) = 1: Laser(n) = EY(n) + ELYC 707: PLAY "o4mbl64 a": CALL EShoot(n, x, Y, ELXC, ELYC, ShipType, Ships, LostAShip) 708: END IF 709: DoneWithShip2: 710: NEXT 711: PUT (x, Y), RShipMask%, AND 712: PUT (x, Y), RShip%, XOR 713: CALL Statistics(Score%, Ships%) 714: SCREEN 7, 0, 0, 0: PCOPY 1, 0 715: END SUB 716: 717: SUB PrivateASCII 718: CLS : LOCATE 1, 3: COLOR 12: PRINT "O" 719: LOCATE 2, 2: PRINT "/" 720: LOCATE 2, 3: COLOR 10: PRINT "|" 721: LOCATE 2, 4: COLOR 12: PRINT "\" 722: LOCATE 3, 2: COLOR 9: PRINT "/ \" 723: GET (8, 0)-(30, 22), ASCII% 724: CLS 725: END SUB 726: 727: SUB RedBaron 728: PSET (10, 40), 9: PSET (280, 50), 9 729: PSET (40, 90), 9: PSET (110, 15), 1 730: PSET (30, 100), 1: PSET (150, 90), 9 731: PSET (250, 70), 9: PSET (100, 100), 1 732: PSET (200, 20), 9: PSET (290, 105), 1 733: RDirect = INT(RND * 4) + 1 734: IF RDirect = 1 THEN ry = -5 735: IF RDirect = 2 THEN rx = 5 736: IF RDirect = 3 THEN ry = 5 737: IF RDirect = 4 THEN rx = -5 738: PUT (25 + rx, 20 + ry), RBaronMask%, AND 739: PUT (25 + rx, 20 + ry), RBaron%, XOR 740: LDirect = INT(RND * 5) + 1 741: IF LDirect = 1 THEN 742: LINE (106 + rx, 59 + ry)-(166 + rx, 110 + ry), 1 743: LINE (243 + rx, 59 + ry)-(303 + rx, 110 + ry), 1 744: END IF 745: END SUB 746: 747: SUB Shoot (x, Y, RangeLeft, RangeRight, NumberofShips, ShipType, Score, ShipPoints, Hits, TempHits, HitsTotal, Defeated, Ships, GainShip) 748: LINE (x + 7, Y + 5)-(x + 7, 8), 1 749: LINE (x + 27, Y + 5)-(x + 27, 8), 1 750: PLAY "o4mbl64 a b" 751: FOR n = 1 TO NumberofShips 752: IF x + 5 > EX(n) - 3 AND x + 5 < EX(n) + RangeLeft THEN 753: TempHits(n) = TempHits(n) + 1 'inflict a damage point 754: FOR Grow = 1 TO 5 755: CIRCLE (x + 7, EY(n) + 10), Grow, 14: NEXT 756: CALL ExplosiveSound 757: FOR Grow = 6 TO 8 758: CIRCLE (x + 7, EY(n) + 10), Grow, 12: NEXT 759: FOR Grow = 9 TO 10 760: CIRCLE (x + 7, EY(n) + 10), Grow, 4: NEXT 761: IF TempHits(n) > HitsTotal THEN 762: TempHits(n) = Hits: GOSUB YouKillMeBaby 763: END IF 764: END IF '-Left laser cannon- 765: ShootPart2: 766: IF x + 26 > EX(n) - 2 AND x + 26 < EX(n) + RangeRight THEN 767: TempHits(n) = TempHits(n) + 1 'inflict a damage point 768: FOR Grow = 1 TO 5 769: CIRCLE (x + 27, EY(n) + 10), Grow, 14: NEXT 770: CALL ExplosiveSound 771: FOR Grow = 6 TO 8 772: CIRCLE (x + 27, EY(n) + 10), Grow, 12: NEXT 773: FOR Grow = 9 TO 10 774: CIRCLE (x + 27, EY(n) + 10), Grow, 4: NEXT 775: IF TempHits(n) > HitsTotal THEN 776: TempHits(n) = Hits: GOSUB YouKillMeBaby 777: END IF 778: END IF '-Right laser cannon- 779: NEXT 780: GOTO DoneShoot 781: 782: YouKillMeBaby: 783: IF ShipType = 3 OR ShipType = 6 THEN GOSUB ExtraExplode 784: EX(n) = -100: EY(n) = -50: Enemy(n) = 0 785: Score% = Score% + ShipPoints% 786: Defeated = Defeated + 1 787: CALL ExtraShipCheck(Score%, Ships%, GainShip%) 788: RETURN 789: 790: ExtraExplode: 791: FOR Extra = 1 TO 4 792: RANDOMIZE TIMER 793: ExplodeX = INT(RND * 80) + 1 794: ExplodeY = INT(RND * 40) + 1 795: FOR Grow = 1 TO 5 796: CIRCLE (EX(n) + ExplodeX, EY(n) + ExplodeY), Grow, 14: NEXT 797: CALL ExplosiveSound 798: FOR Grow = 6 TO 8 799: CIRCLE (EX(n) + ExplodeX, EY(n) + ExplodeY), Grow, 12: NEXT 800: FOR Grow = 9 TO 10 801: CIRCLE (EX(n) + ExplodeX, EY(n) + ExplodeY), Grow, 4: NEXT 802: NEXT Extra 803: 'Final really big explosion 804: FOR Grow = 1 TO 3 805: CIRCLE (EX(n) + 45, EY(n) + 20), Grow, 15: NEXT 806: FOR Grow = 4 TO 10 807: CIRCLE (EX(n) + 45, EY(n) + 20), Grow, 14: NEXT 808: CALL ExplosiveSound 809: FOR Grow = 11 TO 16 810: CIRCLE (EX(n) + 45, EY(n) + 20), Grow, 12: NEXT 811: FOR Grow = 17 TO 20 812: CIRCLE (EX(n) + 45, EY(n) + 20), Grow, 4: NEXT 813: CALL ExplosiveSound 814: RETURN 815: DoneShoot: 816: END SUB 817: 818: SUB stars 819: FOR I = 1 TO 20 820: IF ST(I) = 1 THEN C = 1 ELSE C = 9 821: PSET (SX(I), SY(I)), C 822: SY(I) = SY(I) + ST(I) + 1 823: IF SY(I) > 199 THEN 824: SY(I) = 0: SY(I) = FNR(1) 825: ST(I) = FNR(2) 826: END IF 827: NEXT 828: END SUB 829: 830: SUB Statistics (Score%, Ships%) 831: LINE (7, 0)-(13, 7), 7, BF: LINE (13, 1)-(13, 7), 15 832: LINE (7, 0)-(12, 0), 8: LINE (7, 1)-(7, 6), 8 833: LINE (8, 7)-(13, 7), 15: LINE (304, 0)-(310, 7), 7, BF 834: LINE (310, 1)-(310, 7), 15: LINE (304, 0)-(309, 0), 8 835: LINE (304, 0)-(304, 6), 8: LINE (305, 7)-(310, 7), 15 836: LINE (112, 0)-(215, 7), 7, BF: LINE (112, 0)-(112, 6), 8 837: LINE (112, 0)-(214, 0), 8: LINE (215, 1)-(215, 7), 15 838: LINE (113, 7)-(214, 7), 15 839: LOCATE 1, 3: COLOR 4: PRINT "Score:" 840: LOCATE 1, 9: COLOR 11: PRINT Score% 841: LOCATE 1, 29: COLOR 10: PRINT "Ships:" 842: LOCATE 1, 35: COLOR 11: PRINT Ships% 843: END SUB 844: 845: SUB Sunset (rxpos, rypos) 846: LINE (19, 40)-(300, 55), 4, BF 847: LINE (19, 55)-(300, 70), 12, BF 848: LINE (19, 70)-(300, 90), 14, BF 849: LINE (19, 30)-(300, 30), 4 850: LINE (19, 38)-(300, 38), 4: LINE (19, 35)-(300, 35), 4 851: LINE (19, 45)-(300, 45), 12 852: LINE (19, 50)-(300, 50), 12: LINE (19, 53)-(300, 53), 12 853: LINE (19, 60)-(300, 60), 14 854: LINE (19, 68)-(300, 68), 14: LINE (19, 65)-(300, 65), 14 855: CIRCLE (155, 90), 20, 15 856: PAINT (155, 90), 15, 15 857: LINE (0, 91)-(319, 110), 0, BF 858: LINE (19, 55)-(25, 60), 0: LINE (25, 60)-(35, 65), 0 859: LINE (35, 65)-(44, 80), 0: LINE (44, 80)-(60, 90), 0 860: PAINT (21, 60), 0, 0 861: LINE (250, 90)-(270, 80), 0: LINE (270, 80)-(275, 75), 0 862: LINE (276, 75)-(290, 90), 0: PAINT (260, 88), 0, 0 863: PSET (100, 20), 1: PSET (250, 25), 8: PSET (50, 28), 8 864: PSET (70, 36), 1: PSET (200, 33), 1: PSET (210, 10), 1 865: PSET (20, 20), 9: PSET (55, 10), 9: PSET (170, 15), 9 866: PSET (150, 13), 9: PSET (149, 13), 1: PSET (151, 13), 1 867: PSET (150, 12), 1: PSET (150, 14), 1: PSET (280, 20), 1 868: IF rxpos < 1 THEN rxpos = 300: rypos = 80 869: rxpos = rxpos - 5: rypos = rypos - 1 870: LINE (rxpos, rypos)-(rxpos + 3, rypos), 0, BF'ship 871: SunsetDone: 872: END SUB 873: 874: SUB Title 875: 'r 876: LINE (35, 10)-(75, 10), 4: LINE (35, 10)-(40, 15), 4 877: LINE (40, 15)-(40, 30), 4: LINE (40, 30)-(35, 35), 4 878: LINE (35, 35)-(55, 35), 4: LINE (55, 35)-(50, 30), 4 879: LINE (50, 30)-(50, 15), 4: LINE (50, 15)-(65, 15), 4 880: LINE (65, 15)-(85, 35), 4: LINE (75, 10)-(85, 20), 4 881: LINE (55, 20)-(85, 20), 4: LINE (55, 20)-(65, 30), 4 882: LINE (65, 30)-(60, 35), 4: LINE (60, 35)-(85, 35), 4 883: 'e 884: LINE (85, 10)-(90, 15), 4: LINE (85, 10)-(135, 10), 4 885: LINE (135, 10)-(130, 15), 4: LINE (130, 15)-(100, 15), 4 886: LINE (90, 15)-(90, 30), 4: LINE (90, 30)-(85, 35), 4 887: LINE (85, 35)-(135, 35), 4: LINE (135, 35)-(130, 30), 4 888: LINE (130, 30)-(100, 30), 4: LINE (100, 15)-(100, 20), 4 889: LINE (100, 30)-(100, 25), 4: LINE (100, 20)-(120, 20), 4 890: LINE (100, 25)-(120, 25), 4: LINE (120, 20)-(120, 25), 4 891: 'd 892: LINE (135, 10)-(175, 10), 4: LINE (135, 10)-(140, 15), 4 893: LINE (140, 15)-(140, 30), 4: LINE (140, 30)-(135, 35), 4 894: LINE (135, 35)-(175, 35), 4: LINE (150, 15)-(150, 30), 4 895: LINE (150, 15)-(170, 15), 4: LINE (150, 30)-(170, 30), 4 896: LINE (175, 10)-(185, 20), 4: LINE (175, 35)-(185, 25), 4 897: LINE (185, 20)-(185, 25), 4: LINE (170, 15)-(175, 20), 4 898: LINE (170, 30)-(175, 25), 4: LINE (175, 20)-(175, 25), 4 899: 'b 900: LINE (35, 40)-(75, 40), 4: LINE (35, 40)-(40, 45), 4 901: LINE (40, 45)-(40, 60), 4: LINE (40, 60)-(35, 65), 4 902: LINE (35, 65)-(75, 65), 4: LINE (75, 40)-(85, 50), 4 903: LINE (75, 65)-(85, 55), 4: LINE (85, 50)-(83, 52), 4 904: LINE (85, 55)-(83, 53), 4: LINE (50, 45)-(70, 45), 4 905: LINE (70, 45)-(75, 50), 4: LINE (75, 50)-(50, 50), 4 906: LINE (50, 45)-(50, 50), 4: LINE (50, 60)-(70, 60), 4 907: LINE (70, 60)-(75, 55), 4: LINE (75, 55)-(50, 55), 4 908: LINE (50, 55)-(50, 60), 4 909: 'a 910: LINE (110, 40)-(85, 65), 4: LINE (110, 40)-(135, 65), 4 911: LINE (85, 65)-(105, 65), 4: LINE (105, 65)-(100, 60), 4 912: LINE (100, 60)-(105, 55), 4: LINE (105, 55)-(115, 55), 4 913: LINE (135, 65)-(115, 65), 4: LINE (115, 65)-(120, 60), 4 914: LINE (120, 60)-(115, 55), 4 915: 'r 916: LINE (135, 40)-(175, 40), 4: LINE (135, 40)-(140, 45), 4 917: LINE (140, 45)-(140, 60), 4: LINE (140, 60)-(135, 65), 4 918: LINE (135, 65)-(155, 65), 4: LINE (155, 65)-(150, 60), 4 919: LINE (150, 60)-(150, 45), 4: LINE (150, 45)-(165, 45), 4 920: LINE (165, 45)-(185, 65), 4: LINE (175, 40)-(185, 50), 4 921: LINE (155, 50)-(185, 50), 4: LINE (155, 50)-(165, 60), 4 922: LINE (165, 60)-(160, 65), 4: LINE (160, 65)-(185, 65), 4 923: 'o 924: LINE (195, 40)-(225, 40), 4: LINE (195, 40)-(190, 45), 4 925: LINE (225, 40)-(230, 45), 4: LINE (190, 45)-(190, 60), 4 926: LINE (230, 45)-(230, 60), 4: LINE (190, 60)-(195, 65), 4 927: LINE (230, 60)-(225, 65), 4: LINE (195, 65)-(225, 65), 4 928: LINE (200, 45)-(220, 60), 4, B 929: 'n 930: LINE (235, 40)-(240, 45), 4: LINE (240, 45)-(240, 60), 4 931: LINE (240, 60)-(235, 65), 4: LINE (235, 40)-(250, 40), 4 932: LINE (250, 40)-(265, 55), 4: LINE (235, 65)-(255, 65), 4 933: LINE (255, 65)-(250, 60), 4: LINE (250, 60)-(250, 50), 4 934: LINE (250, 50)-(265, 65), 4: LINE (265, 55)-(265, 40), 4 935: LINE (265, 40)-(280, 40), 4: LINE (280, 40)-(275, 45), 4 936: LINE (275, 45)-(275, 65), 4: LINE (275, 65)-(265, 65), 4 937: PAINT (37, 11), 12, 4: PAINT (62, 34), 12, 4 938: PAINT (87, 11), 12, 4: PAINT (137, 11), 12, 4 939: PAINT (37, 41), 12, 4: PAINT (110, 41), 12, 4 940: PAINT (137, 41), 12, 4: PAINT (162, 64), 12, 4 941: PAINT (195, 41), 12, 4: PAINT (237, 41), 12, 4 942: LINE (216, 25)-(245, 25), 12 943: LOCATE 3, 28: COLOR 4: PRINT "2573" 944: END SUB 945: 946: SUB Update (x, Y, ELXC, ELYC, NumberofShips, ShipType, Score, Ships, LostAShip) 947: END SUB 948: 949: SUB UpLeft (x%, Y%) 950: x% = x% - 5: Y% = Y% - 5 951: IF x% < 20 THEN x% = 20 952: IF Y% < 100 THEN Y% = 100 953: END SUB 954: 955: SUB UpRight (x%, Y%) 956: x% = x% + 5: Y% = Y% - 5 957: IF x% > 250 THEN x% = 250 958: IF Y% < 100 THEN Y% = 100 959: END SUB 960: 961: SUB WaveInfo (Wave, NumberofShips, Score%, Ships%) 962: IF Wave = 0 THEN NumberofShips = 5 963: IF Wave = 1 THEN NumberofShips = 1 964: IF Wave = 2 THEN NumberofShips = 2 965: IF Wave = 3 THEN NumberofShips = 2 966: IF Wave = 4 THEN NumberofShips = 3 967: IF Wave = 5 THEN NumberofShips = 3 968: IF Wave = 6 THEN NumberofShips = 3 969: IF Wave = 7 THEN NumberofShips = 4 970: IF Wave = 8 THEN NumberofShips = 4 971: IF Wave = 9 THEN NumberofShips = 4 972: IF Wave = 10 THEN NumberofShips = 4 973: IF Wave = 11 THEN NumberofShips = 5 974: IF Wave = 12 THEN NumberofShips = 5 975: IF Wave = 13 THEN NumberofShips = 5 976: IF Wave = 14 THEN NumberofShips = 5 977: IF Wave = 15 THEN NumberofShips = 2 978: IF Wave = 16 THEN NumberofShips = 5 979: IF Wave = 17 THEN NumberofShips = 3 980: IF Wave = 18 THEN NumberofShips = 4 981: IF Wave = 19 THEN NumberofShips = 5 982: IF Wave = 20 THEN NumberofShips = 5 983: IF Wave = 21 THEN NumberofShips = 5 984: IF Wave = 22 THEN NumberofShips = 5 985: IF Wave = 23 THEN NumberofShips = 5 986: IF Wave = 24 THEN NumberofShips = 5 987: IF Wave = 25 THEN NumberofShips = 1 988: IF Wave = 26 THEN NumberofShips = 5 989: IF Wave = 27 THEN NumberofShips = 5 990: IF Wave = 28 THEN NumberofShips = 5 991: IF Wave = 29 THEN NumberofShips = 5 992: IF Wave = 30 THEN NumberofShips = 1 993: IF Wave = 31 THEN NumberofShips = 5 994: IF Wave = 32 THEN NumberofShips = 5 995: IF Wave = 33 THEN NumberofShips = 5 996: IF Wave = 34 THEN NumberofShips = 5 997: IF Wave = 35 THEN NumberofShips = 1 998: IF Wave = 36 THEN NumberofShips = 2 999: IF Wave = 37 THEN NumberofShips = 3 1000: IF Wave = 38 THEN NumberofShips = 4 1001: IF Wave > 38 AND Wave < 49 THEN NumberofShips = 5 1002: IF Wave = 49 THEN NumberofShips = 2 1003: IF Wave = 50 THEN NumberofShips = 1 1004: FOR times = 1 TO 40 1005: SCREEN 7, 0, 1, 0 1006: CLS 1007: CALL stars 1008: LOCATE 13, 18: COLOR 12: PRINT "Wave"; Wave 1009: IF Wave = 0 THEN 1010: LOCATE 14, 12: COLOR 15 1011: PRINT "ASCIIs in Space!!!" 1012: END IF 1013: CALL Statistics(Score%, Ships%) 1014: SCREEN 7, 0, 0, 0: PCOPY 1, 0 1015: NEXT 1016: END SUB 1017: 1018: SUB WaveSetup (Wave, ASCII, RangeLeft, RangeRight, ELXC, ELYC, ShipPoints, ShipType, OutOf, Hits, HitsTotal) 1019: IF ASCII% = 1 THEN 1020: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1021: Wave = 0: ShipPoints% = 100: ShipType = 5: OutOf = 20 1022: Hits = 0: HitsTotal = 0 1023: END IF 1024: IF Wave = 1 THEN 1025: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1026: ShipPoints% = 5: ShipType = 1: OutOf = 20 1027: Hits = 0: HitsTotal = 0 1028: END IF 1029: IF Wave = 15 THEN 1030: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1031: ShipPoints% = 10: ShipType = 2: OutOf = 1 1032: Hits = 0: HitsTotal = 0 1033: END IF 1034: IF Wave = 16 THEN 1035: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1036: ShipPoints% = 5: ShipType = 1: OutOf = 20 1037: Hits = 0: HitsTotal = 0 1038: END IF 1039: IF Wave = 17 THEN 1040: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1041: ShipPoints% = 10: ShipType = 2: OutOf = 1 1042: Hits = 0: HitsTotal = 0 1043: END IF 1044: IF Wave = 20 THEN 1045: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1046: ShipPoints% = 5: ShipType = 1: OutOf = 20 1047: Hits = 0: HitsTotal = 0 1048: END IF 1049: IF Wave = 21 THEN 1050: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1051: ShipPoints% = 10: ShipType = 2: OutOf = 1 1052: Hits = 0: HitsTotal = 0 1053: END IF 1054: IF Wave = 25 THEN 1055: RangeLeft = 89: RangeRight = 90 1056: ELXC = 88: ELYC = 43: PLAY "mbo1l4dl16cl2f" 1057: ShipPoints% = 50: ShipType = 3: OutOf = 1 1058: Hits = 0: HitsTotal = 25 1059: END IF 1060: IF Wave = 26 THEN 1061: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1062: ShipPoints% = 5: ShipType = 1: OutOf = 20 1063: Hits = 0: HitsTotal = 0 1064: END IF 1065: IF Wave = 28 THEN 1066: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1067: ShipPoints% = 10: ShipType = 2: OutOf = 1 1068: Hits = 0: HitsTotal = 0 1069: END IF 1070: IF Wave = 30 THEN 1071: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1072: ShipPoints% = 20: ShipType = 4: OutOf = 1 1073: Hits = 0: HitsTotal = 4 1074: END IF 1075: IF Wave = 31 THEN 1076: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1077: ShipPoints% = 5: ShipType = 1: OutOf = 20 1078: Hits = 0: HitsTotal = 0 1079: END IF 1080: IF Wave = 32 THEN 1081: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1082: ShipPoints% = 10: ShipType = 2: OutOf = 1 1083: Hits = 0: HitsTotal = 0 1084: END IF 1085: IF Wave = 35 THEN 1086: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1087: ShipPoints% = 20: ShipType = 4: OutOf = 1 1088: Hits = 0: HitsTotal = 4 1089: END IF 1090: IF Wave = 46 THEN 1091: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1092: ShipPoints% = 5: ShipType = 1: OutOf = 20 1093: Hits = 0: HitsTotal = 0 1094: END IF 1095: IF Wave = 47 THEN 1096: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1097: ShipPoints% = 10: ShipType = 2: OutOf = 1 1098: Hits = 0: HitsTotal = 0 1099: END IF 1100: IF Wave = 48 THEN 1101: RangeLeft = 24: RangeRight = 25: ELXC = 23: ELYC = 16 1102: ShipPoints% = 20: ShipType = 4: OutOf = 1 1103: Hits = 0: HitsTotal = 4 1104: END IF 1105: IF Wave = 49 THEN 1106: RangeLeft = 89: RangeRight = 90 1107: ELXC = 88: ELYC = 43: PLAY "mbo1l4dl16cl2f" 1108: ShipPoints% = 100: ShipType = 3: OutOf = 1 1109: Hits = 0: HitsTotal = 25 1110: END IF 1111: IF Wave = 50 THEN 1112: RangeLeft = 89: RangeRight = 90 1113: ELXC = 88: ELYC = 43: PLAY "mbo1l4dl16cl2f" 1114: ShipPoints% = 100: ShipType = 6: OutOf = 1 1115: Hits = 0: HitsTotal = 75 1116: END IF 1117: END SUB 1118: 1119: SUB YouLose (Score%, Ships%) 1120: FOR times = 1 TO 50 1121: SCREEN 7, 0, 1, 0 1122: CLS 1123: CALL stars: CALL Statistics(Score%, Ships%) 1124: LOCATE 13, 17: COLOR 12: PRINT "Game Over" 1125: SCREEN 7, 0, 0, 0: PCOPY 1, 0 1126: NEXT 1127: END SUB 1128: |