'Space Blast v2.0 1996-97 Release 'Written by Bryan Buschmann in QBasic v4.5 Copyright Microsoft 'Plot: This is a side-scrolling shooter-game. There are a total of ' twelve(12) stages...1) Journey to Battle Star, 2) Outside Battle Star, ' 3) Battle Star Docking Bay, 4) Battle Star Power Grid, ' 5) Battle Star Power Generator, 6) Escape from Battle Star ' 7) Journey to Command Post pt. 1, 8) Journey to Command Post pt. 2, ' 9) Outside Command Post, 10) Death of Command Post, 11) The Escape, ' 12) Special Stage: Astral Arcade ' ' Each Stage has an end boss except for stages 6, 11, 12. These are ' listed here....1) Defense Satellite, 2) Security Perimeter, ' 3) X1 Defense Mechanism, 4) Laser Grid Defense, 5) Power Generator, ' 6) None, 7) Home Guard Fighters, 8) Ultra Fighter, ' 9) Command Post Defense System, 10) Command Post Generator/ ' Armegeddon Suit, 11) None, 12) None ' Game is designed for one(1) or two(2) players. Players earn points ' each time an enemy is destroyed. Points are listed below: ' * = Enemy Boss ' ENEMY(LEVEL): POINTS: ' Red Fighter(1) 10 ' Space Mine(1) 20 ' Red Laser Cannon(1) 10 ' Defense Satellite(1)* 1,000 ' ' ' The player(s) will have 6 different weapon systems available through ' the course of the game. Plus there are 3 levels of each weapon ' that can be powered up. Here is a list of the weapons: ' 1. Laser Cannon -At level up beam becomes wider and stronger ' 2. Razor Cannon -Fires ultra-sharp discs that slice through most stuff ' 3. Plasma Launcher -Spreads like napalm when hits something ' 4. Sharpshooter -Targets and destroys enemies ' 5. Quantum Charge Bomb -Nukes everything(but you) on the screen ' ' The player(s) will also have 3 different defense systems that ' can be added on to the ship. They are: ' 1. Force Shields -Makes ship temporarilly invunlerable ' 2. Temporal Displacement Engine -Allows teleportation ' 3. Energy Enhancers -Increases total energy ' ' During the game when certain enemies are destroyed power-ups that ' help the player(s) will appear. There are 5 main power-ups ' in the game. There are: ' 1. Weapon Level Boosters -Increases current weapon power by 1 ' 2. Armor Level Boosters -Increases Armor Factor by 1 ' 3. Energy Replacement Capsule -Restores Energy ' 4. Pod o'Points -Adds points to player's score ' 5. Ship Clone -Adds a life to player's life total ' ' GAMEPLAY:: ' The player(s) start out with 3 to 5 lives, depending on the difficulty ' setting. Lives can be lost by losing all energy. Each time an enemy ' or enemy weapon hits the player they will lose energy. The Armor ' Factor and strength of weapon will decide on how much energy is lost ' for each hit. If the player doesn't make it out of the escape levels ' (levels 6 and 11) the game ends instantly. The game can be saved at ' any time, but will start at the beginning the level it was saved at ' when it was restored. ' ' CONTROLS:: ' Basic controls are set, but can be changed. The standards are: ' Response: Player 1 Player 2 ' Up Up Arrow W ' Down Down Arrow S ' Left Left Arrow A ' Right Right Arrow D ' Fire Weapon Ctrl Tab ' Switch Weapon / or \ E or R ' Quit Esc Esc ' Quick Help F1 F1 ' Quick Save F2 F2 ' Quick Load F3 F3 ' Setup Menu F4 F4 ' ' PROGRAM: DECLARE SUB Intro () 'Holds Intro to game DECLARE SUB SetVariables () 'Sets all variables to play the game DECLARE SUB SuccessEnding () 'Ending if game beat successfully DECLARE SUB FailureEnding1 () 'General Defeat Ending DECLARE SUB FailureEnding2 () 'Ending if destroyed in escape levels DECLARE SUB GamePlay () 'General play sub-routine DECLARE SUB DrawScreen () 'Draws the background for levels DECLARE SUB EnemySet () 'Sets the enemies for the level DECLARE SUB SetArt () 'Sets the background art for level DECLARE SUB SetTerrain () 'Sets the terrain for level DECLARE SUB SetGraphics () 'Sets the graphics DECLARE SUB DisplayEnemy () 'Gets the enemies for battle DECLARE SUB EraseEnemy () DECLARE SUB KillPlayerDraw () DECLARE SUB KillPlayerErase () DECLARE SUB GetEnemy () DIM SHARED LaserLevel1(20) DIM SHARED LaserLevel2(64) DIM SHARED LaserLevel3(116) DIM SHARED Player.Ship(29) DIM SHARED Ship.Flame1(29) DIM SHARED Ship.Flame2(29) DIM SHARED Ship.Flame3(29) DIM SHARED Background1(10) DIM SHARED Backgroundx(40) DIM SHARED Backgroundy(40) DIM SHARED BackgroundType(40) DIM SHARED Background2(10) DIM SHARED WarpShield(400) DIM SHARED Xmove DIM SHARED YMove DIM SHARED DelaySpeed DIM SHARED FlameCounter DIM SHARED ForwardSpeed DIM SHARED MaxBackground DIM SHARED Background DIM SHARED WeaponMoveX DIM SHARED WeaponMoveY DIM SHARED Weapon$ DIM SHARED WeaponPower DIM SHARED WeaponType DIM SHARED WeaponPowerUp(40) DIM SHARED WeaponUp DIM SHARED WeaponUp$ DIM SHARED WeaponUpX DIM SHARED WeaponUpY DIM SHARED RedShip(24) DIM SHARED SpaceMine(20) DIM SHARED Enemy DIM SHARED EnemyName(5) DIM SHARED MaxEnemy DIM SHARED EnemyPicture(5) DIM SHARED EnemyMoveX(5) DIM SHARED EnemyMoveY(5) DIM SHARED EnemyX(5) DIM SHARED EnemyY(5) DIM SHARED Change(5) DIM SHARED ChangeNumber(5) DIM SHARED Explosion1(91) DIM SHARED Explosion2(91) DIM SHARED Explosion3(91) DIM SHARED Explosion4(91) DIM SHARED Explosion5(91) DIM SHARED Explosion6(91) DIM SHARED Explosion7(91) DIM SHARED Explosion8(91) DIM SHARED Explosion9(91) DIM SHARED Explosion10(91) DIM SHARED Explosion11(91) DIM SHARED Explosion12(91) DIM SHARED Explosion13(91) DIM SHARED Explosion14(91) DIM SHARED Explosion15(91) DIM SHARED Explosion16(91) DIM SHARED ExplosionFrame(5) DIM SHARED EnemyDamage(5) DIM SHARED EnemyArmor(5) DIM SHARED Dead DIM SHARED ExplosionFramePlayer(5) DIM SHARED XVar(5) DIM SHARED YVar(5) DIM SHARED EnemyScore(5) DIM SHARED Initials$(12) DIM SHARED OldInitials$(12) DIM SHARED OldHiScore(12) DIM SHARED HiScore(12) Intro SetVariables SetGraphics GamePlay SUB DisplayEnemy FOR EnemyDisplay = 1 TO 5 Change(EnemyDisplay) = Change(EnemyDisplay) + 1 IF Change(EnemyDislpay) > 40 THEN Change(EnemyDisplay) = 0 SELECT CASE EnemyName(EnemyDisplay) CASE 1 IF Change(EnemyDisplay) < 40 THEN GOTO Skip EnemyMoveX(EnemyDisplay) = INT(RND * 4) - 2 EnemyMoveY(EnemyDisplay) = INT(RND * 6) - 2 Change(EnemyDisplay) = 0 Skip: EnemyX(EnemyDisplay) = EnemyX(EnemyDisplay) - EnemyMoveX(EnemyDisplay) EnemyY(EnemyDisplay) = EnemyY(EnemyDisplay) - EnemyMoveY(EnemyDisplay) IF EnemyX(EnemyDisplay) > 285 THEN EnemyX(EnemyDisplay) = 285 IF EnemyX(EnemyDisplay) < 15 THEN EnemyX(EnemyDisplay) = 15 IF EnemyY(EnemyDisplay) > 185 THEN EnemyY(EnemyDisplay) = 185 IF EnemyY(EnemyDisplay) < 40 THEN EnemyY(EnemyDisplay) = 40 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), RedShip CASE 2 EnemyX(EnemyDisplay) = EnemyX(EnemyDisplay) - (ForwardSpeed - 1) IF EnemyX(EnemyDisplay) > 285 THEN EnemyX(EnemyDisplay) = 285 IF EnemyX(EnemyDisplay) < 15 THEN EnemyX(EnemyDisplay) = 15 IF EnemyY(EnemyDisplay) > 185 THEN EnemyY(EnemyDisplay) = 185 IF EnemyY(EnemyDisplay) < 40 THEN EnemyY(EnemyDisplay) = 40 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), SpaceMine CASE 99 Change(EnemyDisplay) = 0 EnemyMoveX(EnemyDisplay) = 0 EnemyMoveY(EnemyDisplay) = 0 EnemyX(EnemyDisplay) = EnemyX(EnemyDisplay) - 1 EnemyY(EnemyDisplay) = EnemyY(EnemyDisplay) - .5 IF EnemyX(EnemyDisplay) > 285 THEN EnemyX(EnemyDisplay) = 285 IF EnemyX(EnemyDisplay) < 15 THEN EnemyX(EnemyDisplay) = 15 IF EnemyY(EnemyDisplay) > 185 THEN EnemyY(EnemyDisplay) = 185 IF EnemyY(EnemyDisplay) < 40 THEN EnemyY(EnemyDisplay) = 40 ExplosionFrame(EnemyDisplay) = ExplosionFrame(EnemyDisplay) + 1 SELECT CASE ExplosionFrame(EnemyDisplay) CASE 1, 2, 3, 4, 5 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion1 CASE 6, 7, 8, 9, 10 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion2 CASE 11, 12, 13, 14, 15 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion3 CASE 16, 17, 18, 19, 20 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion4 CASE 21, 22, 23, 24, 25 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion5 CASE 26, 27, 28, 29, 30 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion6 CASE 31, 32, 33, 34, 35 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion7 CASE 36, 37, 38, 39, 40 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion8 CASE 41, 42, 43, 44, 45 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion9 CASE 46, 47, 48, 49, 50 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion10 CASE 51, 52, 53, 54, 55 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion11 CASE 56, 57, 58, 59, 60 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion12 CASE 61, 62, 63, 64, 65 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion13 CASE 66, 67, 68, 69, 70 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion14 CASE 71, 72, 73, 74, 75 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion15 CASE 76, 77, 78, 79, 80 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion16 END SELECT IF EnemyX(EnemyDisplay) < 15 THEN EnemyName = 0 END SELECT NoEnemy: NEXT EnemyDisplay END SUB SUB EraseEnemy FOR EnemyDisplay = 1 TO 5 SELECT CASE EnemyName(EnemyDisplay) CASE 1 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), RedShip, XOR IF EnemyX(EnemyDisplay) < Xmove + 13 AND EnemyY(EnemyDisplay) < YMove + 6 AND EnemyY(EnemyDisplay) > YMove - 6 THEN Dead = 1 EnemyName(EnemyDisplay) = 99 END IF CASE 2 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), SpaceMine, XOR IF EnemyX(EnemyDisplay) < Xmove + 13 AND EnemyY(EnemyDisplay) < YMove + 6 AND EnemyY(EnemyDisplay) > YMove - 6 THEN Dead = 1 EnemyName(EnemyDisplay) = 99 END IF IF EnemyX(EnemyDisplay) = 15 THEN EnemyName(EnemyDisplay) = 0 CASE 99 SELECT CASE ExplosionFrame(EnemyDisplay) CASE 1, 2, 3, 4, 5 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion1 CASE 6, 7, 8, 9, 10 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion2 CASE 11, 12, 13, 14, 15 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion3 CASE 16, 17, 18, 19, 20 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion4 CASE 21, 22, 23, 24, 25 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion5 CASE 26, 27, 28, 29, 30 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion6 CASE 31, 32, 33, 34, 35 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion7 CASE 36, 37, 38, 39, 40 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion8 CASE 41, 42, 43, 44, 45 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion9 CASE 46, 47, 48, 49, 50 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion10 CASE 51, 52, 53, 54, 55 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion11 CASE 56, 57, 58, 59, 60 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion12 CASE 61, 62, 63, 64, 65 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion13 CASE 66, 67, 68, 69, 70 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion14 CASE 71, 72, 73, 74, 75 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion15 CASE 76, 77, 78, 79, 80 PUT (EnemyX(EnemyDisplay), EnemyY(EnemyDisplay)), Explosion16 EnemyX(EnemyDisplay) = 0 EnemyY(EnemyDisplay) = 0 EnemyName(EnemyDisplay) = 0 ExplosionFrame(EnemyDisplay) = 0 END SELECT END SELECT NEXT EnemyDisplay END SUB SUB GamePlay LINE (10, 40)-(310, 190), 15, B LINE (0, 0)-(320, 40), 7, BF StartofAction: SELECT CASE INKEY$ CASE "D", "d" Dead = 1 CASE "q" END CASE "C", "c" WeaponPower = WeaponPower + 1 IF WeaponPower > 3 THEN WeaponPower = 3 CASE "V", "v" WeaponPower = WeaponPower - 1 IF WeaponPower < 1 THEN WeaponPower = 1 CASE CHR$(0) + "K" Xmove = Xmove - 4 CASE CHR$(0) + "M" Xmove = Xmove + 4 CASE CHR$(0) + "P" YMove = YMove + 4 CASE CHR$(0) + "H" YMove = YMove - 4 CASE "M", "m" IF ForwardSpeed = 2 THEN ForwardSpeed = 10 ELSE ForwardSpeed = 2 CASE CHR$(32) IF Weapon$ = "on" THEN GOTO NoShot Weapon$ = "on" WeaponMoveX = Xmove WeaponMoveY = YMove + 5 END SELECT NoShot: IF Weapon$ <> "on" THEN GOTO NoneShot WeaponMoveX = WeaponMoveX + 16 IF WeaponMoveX > 270 THEN Weapon$ = "off" IF Weapon$ = "off" THEN GOTO NoneShot SELECT CASE WeaponType CASE 1 SELECT CASE WeaponPower CASE 1 PUT (WeaponMoveX, WeaponMoveY), LaserLevel1 CASE 2 PUT (WeaponMoveX, WeaponMoveY - 5), LaserLevel2 CASE 3 PUT (WeaponMoveX, WeaponMoveY - 5), LaserLevel3 END SELECT END SELECT FOR HitEnemy = 1 TO 5 IF WeaponMoveX < EnemyX(HitEnemy) + 15 AND WeaponMoveX > EnemyX AND WeaponMoveY > EnemyY(HitEnemy) AND WeaponMoveY < EnemyY(HitEnemy) + 10 THEN EnemyDamage(HitEnemy) = EnemyDamage(HitEnemy) + 1 Player.Score = Player.Score + EnemyScore(HitEnemy) LOCATE 1, 1 PRINT Player.Score END IF IF EnemyDamage(HitEnemy) > EnemyArmor(HitEnemy) THEN EnemyName(HitEnemy) = 99 EnemyDamage(HitEnemy) = 0 EnemyArmor(HitEnemy) = 0 END IF NEXT HitEnemy NoneShot: GetEnemy DisplayEnemy IF Xmove < 22 THEN Xmove = 22 IF Xmove > 296 THEN Xmove = 296 IF YMove < 41 THEN YMove = 41 IF YMove > 183 THEN YMove = 183 IF WeaponUp$ = "on" THEN GOTO SkipWeapon 'WeaponUp = INT(RND * 20) + 1 'IF WeaponUp > 18 THEN WeaponUp$ = "on" 'WeaponUpX = 250 'WeaponUpY = INT(RND * 147) + 43 SkipWeapon: IF WeaponUp$ = "on" THEN WeaponUpX = WeaponUpX - (ForwardSpeed): PUT (WeaponUpX, WeaponUpY), WeaponPowerUp PUT (Xmove, YMove), Player.Ship FOR Background = 1 TO MaxBackground IF BackgroundType(Background) <> 1 THEN PUT (Backgroundx(Background), Backgroundy(Background)), Background1 IF BackgroundType(Background) = 1 THEN PUT (Backgroundx(Background), Backgroundy(Background)), Background2 NEXT Background FlameCounter = FlameCounter - 1 SELECT CASE FlameCounter CASE 1, 2, 3 PUT (Xmove - 11, YMove), Ship.Flame1 CASE 4, 5, 6 PUT (Xmove - 11, YMove), Ship.Flame2 CASE 7, 8, 9 PUT (Xmove - 11, YMove), Ship.Flame3 END SELECT IF Dead = 1 THEN KillPlayerDraw FOR Delay = 1 TO DelaySpeed: NEXT Delay IF Dead = 1 THEN KillPlayerErase PUT (Xmove, YMove), Player.Ship, XOR EraseEnemy IF ForwardSpeed = 10 THEN PUT (Xmove + 2, YMove - 17), WarpShield FOR Background = 1 TO MaxBackground IF BackgroundType(Background) <> 1 THEN PUT (Backgroundx(Background), Backgroundy(Background)), Background1, XOR IF BackgroundType(Background) = 1 THEN PUT (Backgroundx(Background), Backgroundy(Background)), Background2, XOR NEXT Background SELECT CASE FlameCounter CASE 1, 2, 3 PUT (Xmove - 11, YMove), Ship.Flame1, XOR CASE 4, 5, 6 PUT (Xmove - 11, YMove), Ship.Flame2, XOR CASE 7, 8, 9 PUT (Xmove - 11, YMove), Ship.Flame3, XOR END SELECT IF ForwardSpeed = 10 THEN PUT (Xmove + 2, YMove - 17), WarpShield, XOR IF FlameCounter < 1 THEN FlameCounter = 10 FOR Background = 1 TO MaxBackground Backgroundx(Background) = Backgroundx(Background) - ForwardSpeed + BackgroundType(Background) IF Backgroundx(Background) < 12 THEN Backgroundx(Background) = 305: Backgroundy(Background) = INT(RND * 147) + 43: BackgroundType(Background) = INT(RND * 2) NEXT Background IF WeaponUp$ = "on" THEN PUT (WeaponUpX, WeaponUpY), WeaponPowerUp, XOR IF Weapon$ = "off" THEN GOTO NoneShot2 SELECT CASE WeaponType CASE 1 SELECT CASE WeaponPower CASE 1 PUT (WeaponMoveX, WeaponMoveY), LaserLevel1, XOR CASE 2 PUT (WeaponMoveX, WeaponMoveY - 5), LaserLevel2, XOR CASE 3 PUT (WeaponMoveX, WeaponMoveY - 5), LaserLevel3, XOR END SELECT END SELECT NoneShot2: IF WeaponUp$ = "on" AND WeaponUpX < 15 THEN WeaponUp$ = "off" IF WeaponUp$ = "on" AND Xmove + 10 > WeaponUpX AND YMove + 5 > WeaponUpY AND YMove - 5 < WeaponUpY THEN WeaponUp$ = "off": WeaponPower = WeaponPower + 1 IF WeaponPower > 3 THEN WeaponPower = 3 IF WeaponPower < 1 THEN WeaponPower = 1 GOTO StartofAction END SUB SUB GetEnemy FOR EnemyCheck = 1 TO 5 IF EnemyName(EnemyCheck) <> 0 THEN GOTO NextEnemy IF EnemyName(EnemyCheck) = 0 THEN Enemy = INT(RND * 10) + 1 EnemyName(EnemyCheck) = INT(Enemy / 5) EnemyX(EnemyCheck) = 285 EnemyY(EnemyCheck) = INT(RND * 147) + 43 SELECT CASE EnemyName(EnemyCheck) CASE 1 EnemyDamage(EnemyCheck) = 0 EnemyArmor(EnemyCheck) = 3 EnemyScore(EnemyCheck) = 10 CASE 2 EnemyDamage(EnemyCheck) = 0 EnemyArmor(EnemyCheck) = 2 EnemyScore(EnemyCheck) = 20 END SELECT END IF NextEnemy: NEXT EnemyCheck END SUB SUB Intro INPUT InitialIt$ SCREEN 12 REM OPEN "Hiscore.bst" FOR INPUT AS #1 REM FOR HiScores = 1 TO 11 REM INPUT #1, Initials$(HiScores), HiScore(HiScores) REM NEXT HiScores REM CLOSE END SUB SUB KillPlayerDraw XVar(1) = 10 XVar(2) = -10 XVar(3) = -10 XVar(4) = 0 XVar(5) = 10 YVar(1) = 10 YVar(2) = -10 YVar(3) = 10 YVar(4) = 0 YVar(5) = -10 FOR KillOff = 1 TO 5 ExplosionFramePlayer(KillOff) = ExplosionFramePlayer(KillOff) + 1 SELECT CASE ExplosionFramePlayer(KillOff) CASE 1, 2, 3, 4, 5 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion1 CASE 6, 7, 8, 9, 10 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion2 CASE 11, 12, 13, 14, 15 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion3 CASE 16, 17, 18, 19, 20 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion4 CASE 21, 22, 23, 24, 25 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion5 CASE 26, 27, 28, 29, 30 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion6 CASE 31, 32, 33, 34, 35 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion7 CASE 36, 37, 38, 39, 40 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion8 CASE 41, 42, 43, 44, 45 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion9 CASE 46, 47, 48, 49, 50 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion10 CASE 51, 52, 53, 54, 55 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion11 CASE 56, 57, 58, 59, 60 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion12 CASE 61, 62, 63, 64, 65 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion13 CASE 66, 67, 68, 69, 70 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion14 CASE 71, 72, 73, 74, 75 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion15 CASE 76, 77, 78, 79, 80 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion16 END SELECT NEXT KillOff END SUB SUB KillPlayerErase FOR KillOff = 1 TO 5 SELECT CASE ExplosionFramePlayer(KillOff) CASE 1, 2, 3, 4, 5 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion1 CASE 6, 7, 8, 9, 10 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion2 CASE 11, 12, 13, 14, 15 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion3 CASE 16, 17, 18, 19, 20 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion4 CASE 21, 22, 23, 24, 25 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion5 CASE 26, 27, 28, 29, 30 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion6 CASE 31, 32, 33, 34, 35 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion7 CASE 36, 37, 38, 39, 40 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion8 CASE 41, 42, 43, 44, 45 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion9 CASE 46, 47, 48, 49, 50 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion10 CASE 51, 52, 53, 54, 55 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion11 CASE 56, 57, 58, 59, 60 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion12 CASE 61, 62, 63, 64, 65 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion13 CASE 66, 67, 68, 69, 70 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion14 CASE 71, 72, 73, 74, 75 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion15 CASE 76, 77, 78, 79, 80 PUT (Xmove - XVar(KillOff), YMove - YVar(KillOff)), Explosion16 SCREEN 12 FOR CheckScore = 1 TO 10 OldHiScore(CheckScore) = HiScore(CheckScore) OldInitials$(CheckScore) = Initials$(CheckScore) NEXT CheckScore FOR CheckScore = 1 TO 10 IF Player.Score > HiScore(CheckScore) THEN HiScore(CheckScore) = Player.Score Initials$(CheckScore) = InitialIt$ FOR MoveScore = 1 TO 10 HiScore(MoveScore + 1) = OldHiScore(MoveScore) Initials$(CheckScore + 1) = OldInitials$(CheckScore) NEXT MoveScore END IF NEXT CheckScore FOR HiScores = 1 TO 10 PRINT HiScores, Initials$(HiScores), HiScore(HiScores) NEXT HiScores OPEN "Hiscore.bst" FOR OUTPUT AS #1 FOR HiScores = 1 TO 11 WRITE #1, Initials$(HiScores), HiScore(HiScores) NEXT HiScores CLOSE END END SELECT NEXT KillOff END SUB SUB SetGraphics CLS CIRCLE (100, 50), 20, 78, 4.3, 2, .1 CIRCLE (94, 50), 20, 77, 4.3, 2, .1 CIRCLE (88, 50), 20, 76, 4.3, 2, .1 CIRCLE (82, 50), 20, 75, 4.3, 2, .1 LINE (50, 50)-(120, 50), 74 GET (79, 45)-(120, 55), LaserLevel3 CLS CIRCLE (82, 50), 15, 36, 4.3, 2, .1 LINE (75, 50)-(95, 50), 38 LINE (79, 49)-(85, 49), 37 LINE (79, 51)-(85, 51), 37 GET (75, 45)-(97, 55), LaserLevel2 CLS LINE (50, 50)-(75, 50), 34 LINE (53, 51)-(60, 51), 32 LINE (63, 49)-(70, 49), 32 LINE (60, 50)-(63, 50), 33 LINE (70, 50)-(73, 50), 33 LINE (50, 50)-(53, 50), 33 GET (50, 49)-(75, 51), LaserLevel1 CLS PSET (99, 103), 107 PSET (99, 104), 109 PSET (100, 100), 109 PSET (100, 101), 109 PSET (100, 102), 107 PSET (100, 103), 107 PSET (100, 104), 109 PSET (101, 100), 107 PSET (101, 101), 109 PSET (101, 102), 109 PSET (101, 103), 107 PSET (101, 104), 107 PSET (101, 105), 109 PSET (102, 100), 107 PSET (102, 101), 107 PSET (102, 102), 109 PSET (102, 103), 109 PSET (102, 104), 107 PSET (102, 105), 109 PSET (103, 101), 107 PSET (103, 102), 107 PSET (103, 103), 109 PSET (103, 104), 109 PSET (103, 105), 109 PSET (104, 101), 107 PSET (104, 102), 107 PSET (104, 103), 109 PSET (104, 104), 109 PSET (104, 105), 109 PSET (105, 101), 107 PSET (105, 102), 107 PSET (105, 103), 107 PSET (105, 104), 107 PSET (105, 105), 109 PSET (106, 102), 25 PSET (106, 103), 107 PSET (106, 104), 21 PSET (106, 105), 21 PSET (107, 102), 25 PSET (107, 103), 25 PSET (107, 104), 107 PSET (107, 105), 21 PSET (107, 106), 25 PSET (108, 102), 25 PSET (108, 103), 25 PSET (108, 104), 107 PSET (108, 105), 109 PSET (108, 106), 25 PSET (109, 102), 25 PSET (109, 103), 25 PSET (109, 104), 107 PSET (109, 105), 109 PSET (109, 106), 25 PSET (110, 103), 107 PSET (110, 104), 107 PSET (110, 105), 109 PSET (111, 103), 107 PSET (111, 104), 107 PSET (112, 104), 107 GET (99, 100)-(112, 106), Player.Ship CLS PSET (100, 102), 4 PSET (101, 102), 4 PSET (102, 102), 4 PSET (102, 103), 4 PSET (103, 101), 4 PSET (103, 102), 40 PSET (103, 103), 4 PSET (104, 100), 4 PSET (104, 101), 40 PSET (104, 102), 40 PSET (104, 103), 40 PSET (105, 100), 42 PSET (105, 101), 42 PSET (105, 102), 42 PSET (105, 103), 42 PSET (105, 104), 40 PSET (106, 100), 42 PSET (106, 101), 43 PSET (106, 102), 43 PSET (106, 103), 42 PSET (106, 104), 42 PSET (107, 100), 43 PSET (107, 101), 43 PSET (107, 102), 43 PSET (107, 103), 43 PSET (107, 104), 43 PSET (108, 100), 44 PSET (108, 101), 44 PSET (108, 102), 44 PSET (108, 103), 44 PSET (108, 104), 43 PSET (109, 100), 44 PSET (109, 101), 44 PSET (109, 102), 52 PSET (109, 103), 44 PSET (109, 104), 44 PSET (110, 100), 44 PSET (110, 101), 44 PSET (110, 102), 52 PSET (110, 103), 44 PSET (111, 101), 44 PSET (111, 102), 52 PSET (107, 102), 43 PSET (107, 103), 43 PSET (107, 104), 43 PSET (107, 100), 43 PSET (107, 101), 43 PSET (107, 102), 43 PSET (107, 103), 43 PSET (107, 104), 43 GET (100, 100)-(111, 104), Ship.Flame1 CLS PSET (102, 102), 4 PSET (103, 101), 4 PSET (103, 102), 40 PSET (103, 103), 4 PSET (104, 101), 40 PSET (104, 102), 40 PSET (104, 103), 40 PSET (105, 101), 42 PSET (105, 102), 42 PSET (105, 103), 42 PSET (106, 100), 42 PSET (106, 101), 43 PSET (106, 102), 43 PSET (106, 103), 42 PSET (107, 100), 43 PSET (107, 101), 43 PSET (107, 102), 43 PSET (107, 103), 43 PSET (108, 100), 44 PSET (108, 101), 44 PSET (108, 102), 44 PSET (108, 103), 44 PSET (108, 104), 43 PSET (109, 100), 44 PSET (109, 101), 44 PSET (109, 102), 52 PSET (109, 103), 44 PSET (109, 104), 44 PSET (110, 100), 44 PSET (110, 101), 44 PSET (110, 102), 52 PSET (110, 103), 44 PSET (111, 101), 44 PSET (111, 102), 52 PSET (107, 102), 43 PSET (107, 103), 43 PSET (107, 104), 43 PSET (107, 100), 43 PSET (107, 101), 43 PSET (107, 102), 43 PSET (107, 103), 43 PSET (107, 104), 43 GET (100, 100)-(111, 104), Ship.Flame2 CLS PSET (103, 102), 40 PSET (104, 102), 40 PSET (105, 101), 42 PSET (105, 102), 42 PSET (106, 101), 43 PSET (106, 102), 43 PSET (106, 103), 42 PSET (107, 101), 43 PSET (107, 102), 43 PSET (107, 103), 43 PSET (108, 100), 44 PSET (108, 101), 44 PSET (108, 102), 44 PSET (108, 103), 44 PSET (108, 104), 43 PSET (109, 100), 44 PSET (109, 101), 44 PSET (109, 102), 52 PSET (109, 103), 44 PSET (109, 104), 44 PSET (110, 100), 44 PSET (110, 101), 44 PSET (110, 102), 52 PSET (110, 103), 44 PSET (111, 101), 44 PSET (111, 102), 52 GET (100, 100)-(111, 104), Ship.Flame3 CLS PSET (100, 101), 44 PSET (101, 100), 44 PSET (101, 101), 15 PSET (101, 102), 44 PSET (102, 101), 44 GET (100, 100)-(102, 102), Background1 CLS PSET (100, 100), 25 GET (99, 99)-(101, 101), Background2 CLS CIRCLE (110, 100), 20, 52, 4.3, 2, .3 GET (110, 80)-(130, 110), WarpShield CLS LINE (10, 10)-(16, 16), 46, BF PSET (10, 10), 0 PSET (16, 16), 0 PSET (16, 10), 0 PSET (10, 16), 0 PSET (11, 12), 56 PSET (11, 13), 56 PSET (11, 14), 56 PSET (12, 15), 56 PSET (13, 13), 56 PSET (13, 14), 56 PSET (14, 15), 56 PSET (15, 12), 56 PSET (15, 13), 56 PSET (15, 14), 56 GET (10, 10)-(16, 16), WeaponPowerUp CLS PSET (100, 104), 40 PSET (101, 104), 40 PSET (102, 103), 25 PSET (102, 104), 40 PSET (102, 105), 40 PSET (103, 102), 25 PSET (103, 103), 25 PSET (103, 104), 40 PSET (103, 105), 40 PSET (104, 102), 25 PSET (104, 103), 25 PSET (104, 104), 40 PSET (104, 105), 40 PSET (105, 102), 25 PSET (105, 103), 40 PSET (105, 104), 40 PSET (105, 105), 40 PSET (106, 102), 25 PSET (106, 103), 40 PSET (106, 104), 4 PSET (106, 105), 40 PSET (107, 103), 40 PSET (107, 104), 4 PSET (107, 105), 40 PSET (108, 102), 45 PSET (108, 103), 40 PSET (108, 104), 4 PSET (108, 105), 40 PSET (109, 101), 45 PSET (109, 102), 45 PSET (109, 103), 40 PSET (109, 104), 4 PSET (109, 105), 40 PSET (110, 101), 45 PSET (110, 102), 40 PSET (110, 103), 4 PSET (110, 104), 40 PSET (110, 105), 40 PSET (111, 100), 45 PSET (111, 101), 45 PSET (111, 102), 40 PSET (111, 103), 4 PSET (111, 104), 40 PSET (111, 105), 40 PSET (112, 100), 45 PSET (112, 101), 45 PSET (112, 102), 40 PSET (112, 103), 4 PSET (112, 104), 40 PSET (112, 105), 40 PSET (113, 102), 40 PSET (113, 103), 4 PSET (113, 105), 40 PSET (114, 102), 40 PSET (114, 103), 4 GET (100, 100)-(115, 105), RedShip CLS PSET (100, 101), 40 PSET (101, 101), 25 PSET (101, 102), 4 PSET (101, 105), 25 PSET (101, 106), 25 PSET (101, 107), 40 PSET (102, 101), 25 PSET (102, 102), 21 PSET (102, 103), 25 PSET (102, 104), 25 PSET (102, 105), 25 PSET (102, 106), 4 PSET (103, 101), 25 PSET (103, 102), 25 PSET (103, 103), 25 PSET (103, 104), 21 PSET (103, 105), 25 PSET (104, 102), 25 PSET (104, 103), 21 PSET (104, 104), 25 PSET (104, 105), 25 PSET (104, 106), 25 PSET (105, 101), 4 PSET (105, 102), 25 PSET (105, 103), 25 PSET (105, 104), 25 PSET (105, 105), 21 PSET (105, 106), 25 PSET (106, 100), 40 PSET (106, 101), 25 PSET (106, 102), 25 PSET (106, 105), 4 PSET (106, 106), 25 PSET (107, 106), 40 GET (100, 100)-(107, 107), SpaceMine CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (105, 110), 3, 4 PAINT (105, 110), 4 CIRCLE (110, 104), 1, 4 PAINT (110, 104), 4 CIRCLE (115, 115), 2, 4 PAINT (115, 115), 4 GET (101, 101)-(119, 119), Explosion1 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (105, 110), 4, 4 PAINT (105, 110), 4 CIRCLE (110, 104), 2, 4 PAINT (110, 104), 4 CIRCLE (115, 115), 3, 4 PAINT (115, 115), 4 GET (101, 101)-(119, 119), Explosion2 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (105, 110), 4, 4 PAINT (105, 110), 4 CIRCLE (110, 104), 3, 4 PAINT (110, 104), 4 CIRCLE (115, 115), 4, 4 PAINT (115, 115), 4 GET (101, 101)-(119, 119), Explosion3 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (105, 110), 3, 4 PAINT (105, 110), 4 CIRCLE (110, 104), 3, 4 PAINT (110, 104), 4 CIRCLE (115, 115), 4, 4 PAINT (115, 115), 4 CIRCLE (110, 110), 1, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion4 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (105, 110), 2, 4 PAINT (105, 110), 4 CIRCLE (110, 104), 4, 4 PAINT (110, 104), 4 CIRCLE (115, 115), 3, 4 PAINT (115, 115), 4 CIRCLE (110, 110), 2, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion5 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (105, 110), 1, 4 PAINT (105, 110), 4 CIRCLE (110, 104), 3, 4 PAINT (110, 104), 4 CIRCLE (115, 115), 2, 4 PAINT (115, 115), 4 CIRCLE (110, 110), 3, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion6 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (110, 104), 2, 4 PAINT (110, 104), 4 CIRCLE (115, 115), 3, 4 PAINT (115, 115), 4 CIRCLE (110, 110), 4, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion7 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (110, 104), 1, 4 PAINT (110, 104), 4 CIRCLE (115, 115), 2, 4 PAINT (115, 115), 4 CIRCLE (110, 110), 5, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion8 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (115, 115), 1, 4 PAINT (115, 115), 4 CIRCLE (110, 110), 6, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion9 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (110, 110), 7, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion10 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (110, 110), 6, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion11 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (110, 110), 5, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion12 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (110, 110), 4, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion13 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (110, 110), 3, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion14 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (110, 110), 2, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion15 CLS LINE (100, 100)-(120, 120), 15, B CIRCLE (110, 110), 1, 4 PAINT (110, 110), 4 GET (101, 101)-(119, 119), Explosion16 CLS END SUB SUB SetVariables SCREEN 13 RANDOMIZE TIMER Xmove = 100 YMove = 100 FlameCounter = 10 DelaySpeed = 1000 ForwardSpeed = 2 MaxBackground = 40 FOR Background = 1 TO MaxBackground Backgroundx(Background) = INT(RND * 297) + 3 Backgroundy(Background) = INT(RND * 147) + 43 BackgroundType(Background) = INT(RND * 2) NEXT Background WeaponMoveX = Xmove WeaponMoveY = YMove Weapon$ = "off" WeaponPower = 1 WeaponType = 1 Change = 0 FOR EnemyCheck = 1 TO 5 EnemyName(EnemyCheck) = 0 NEXT EnemyCheck END SUB