Example #1
0
        protected override void Update(GameTime gameTime)
        {
            playerSprite.spritePos = Vector2.Clamp(playerSprite.spritePos, new Vector2(50, 0), new Vector2(780, 1500)); //Stopping the Character sprite from being able to go off the screen
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit(); // when ESC is pressed the game will close
            }
            KeyboardState keyboardState = Keyboard.GetState();
            GamePadState  gamePadState  = GamePad.GetState(PlayerIndex.One);

            if (levelNumber == 4 && keyboardState.IsKeyDown(Keys.Enter))
            {
                levelNumber  = 0;
                lives        = 3;
                playerSprite = new PlayerSprite(playersheetTxr, whiteBox, new Vector2(50, 430), hitSound, jumpSound); //giving player sprite variable a value
                foreach (EnemySprite enemySprite in enemySprites[levelNumber])
                {
                    enemySprite.dead         = false;
                    enemySprite.levelAdvance = false;
                }
                MediaPlayer.Play(backingTrack);
            }
            if (levelNumber == 3 && keyboardState.IsKeyDown(Keys.Enter))
            {
                levelNumber  = 0;
                lives        = 3;
                playerSprite = new PlayerSprite(playersheetTxr, whiteBox, new Vector2(50, 430), hitSound, jumpSound); //giving player sprite variable a value
                foreach (EnemySprite enemySprite in enemySprites[levelNumber])
                {
                    enemySprite.dead         = false;
                    enemySprite.levelAdvance = false;
                }
                MediaPlayer.Play(backingTrack);
            }
            // if you are on any screen other than the game over screen then pressing space will create a blast corresponding to where the player character is positioned and whether or not the sprite is flipped
            if (levelNumber < 4)
            {
                if (keyboardState.IsKeyDown(Keys.Space) && !kiBlast && playerSprite.currentState != PlayerSprite.playerStates.kiBlast)
                {
                    if (playerSprite.flipped)
                    {
                        blasts.Add(new KiBlastSprite(kiBlastTxr, whiteBox, new Vector2(playerSprite.spritePos.X - 25, playerSprite.spritePos.Y - 25), new Vector2(-300, 0)));
                    }
                    else
                    {
                        blasts.Add(new KiBlastSprite(kiBlastTxr, whiteBox, new Vector2(playerSprite.spritePos.X + 25, playerSprite.spritePos.Y - 25), new Vector2(300, 0)));
                    }
                    kiBlast = true;
                    blastSound.Play(); //Playing the sound of the blast
                }
                else if (!keyboardState.IsKeyDown(Keys.Space) && kiBlast)
                {
                    kiBlast = false;                                                       //declairing the value of the blast false when space bar is no longer pressed after using a blast
                }
                //Updating the blasts
                foreach (KiBlastSprite kiBlast in blasts)
                {
                    kiBlast.Update(gameTime, enemySprites[levelNumber], playerSprite);
                }
            }

            foreach (EnemySprite enemySprite in enemySprites[levelNumber])
            {
                if (!enemySprite.dead)
                {
                    enemySprite.Update(gameTime, blasts, playerSprite);                   //if the enemy sprite is not dead then the enemy sprites update
                }
                if (enemySprite.levelAdvance)
                {
                    levelNumber++;
                    playerSprite = new PlayerSprite(playersheetTxr, whiteBox, new Vector2(50, 430), hitSound, jumpSound);
                    break;
                }
                //Controlling the movement of the enemies on the 1st level
                if (levelNumber == 0)
                {
                    if (enemySprite.spritePos.Y < 110f && enemySprite.spritePos.X > 748f && enemySprite.spritePos.X < 790f && !enemySprite.flipped)
                    {
                        enemySprite.spritePos.X++;
                        enemySprite.flipped = false;
                    }
                    else if (enemySprite.spritePos.Y < 110f && !enemySprite.flipped && enemySprite.spritePos.X == 790f)
                    {
                        enemySprite.flipped = true;
                    }
                    if (enemySprite.spritePos.Y < 110f && enemySprite.flipped && enemySprite.spritePos.X > 750f)
                    {
                        enemySprite.spritePos.X--;
                    }
                    else if (enemySprite.spritePos.Y < 110f && enemySprite.flipped && enemySprite.spritePos.X <= 750f)
                    {
                        enemySprite.flipped = false;
                    }

                    if (enemySprite.spritePos.Y > 216f && enemySprite.spritePos.X > 200f && enemySprite.spritePos.X < 790f && !enemySprite.flipped)
                    {
                        enemySprite.spritePos.X += 2;
                        enemySprite.flipped      = false;
                    }
                    else if (enemySprite.spritePos.Y > 216f && !enemySprite.flipped && enemySprite.spritePos.X == 790f)
                    {
                        enemySprite.flipped = true;
                    }
                    if (enemySprite.spritePos.Y > 216f && enemySprite.flipped && enemySprite.spritePos.X > 202f)
                    {
                        enemySprite.spritePos.X -= 2;
                    }
                    else if (enemySprite.spritePos.Y > 216f && enemySprite.flipped && enemySprite.spritePos.X <= 202f)
                    {
                        enemySprite.flipped = false;
                    }
                }
                //Controlling the enemies movement on the 2nd level
                if (levelNumber == 1)
                {
                    if (enemySprite.spritePos.Y < 200f && enemySprite.spritePos.X > 748f && enemySprite.spritePos.X < 790f && !enemySprite.flipped)
                    {
                        enemySprite.spritePos.X++;
                        enemySprite.flipped = false;
                    }
                    else if (enemySprite.spritePos.Y < 200f && !enemySprite.flipped && enemySprite.spritePos.X == 790f)
                    {
                        enemySprite.flipped = true;
                    }
                    if (enemySprite.spritePos.Y < 200f && enemySprite.flipped && enemySprite.spritePos.X > 750f)
                    {
                        enemySprite.spritePos.X--;
                    }
                    else if (enemySprite.spritePos.Y < 200f && enemySprite.flipped && enemySprite.spritePos.X <= 750f)
                    {
                        enemySprite.flipped = false;
                    }

                    if (enemySprite.spritePos.Y > 301f && enemySprite.spritePos.X > 200f && enemySprite.spritePos.X < 790f && !enemySprite.flipped)
                    {
                        enemySprite.spritePos.X += 2;
                        enemySprite.flipped      = false;
                    }
                    else if (enemySprite.spritePos.Y > 301f && !enemySprite.flipped && enemySprite.spritePos.X == 790f)
                    {
                        enemySprite.flipped = true;
                    }
                    if (enemySprite.spritePos.Y > 301f && enemySprite.flipped && enemySprite.spritePos.X > 499)
                    {
                        enemySprite.spritePos.X -= 2;
                    }
                    else if (enemySprite.spritePos.Y > 301f && enemySprite.flipped && enemySprite.spritePos.X <= 500f)
                    {
                        enemySprite.flipped = false;
                    }
                }
                //Controlling the enemies on the 3rd level
                if (levelNumber == 2)
                {
                    if (enemySprite.spritePos.Y < 200f && enemySprite.spritePos.X > 748f && enemySprite.spritePos.X < 790f && !enemySprite.flipped)
                    {
                        enemySprite.spritePos.X++;
                        enemySprite.flipped = false;
                    }
                    else if (enemySprite.spritePos.Y < 200f && !enemySprite.flipped && enemySprite.spritePos.X == 790f)
                    {
                        enemySprite.flipped = true;
                    }
                    if (enemySprite.spritePos.Y < 200f && enemySprite.flipped && enemySprite.spritePos.X > 750f)
                    {
                        enemySprite.spritePos.X--;
                    }
                    else if (enemySprite.spritePos.Y < 200f && enemySprite.flipped && enemySprite.spritePos.X <= 750f)
                    {
                        enemySprite.flipped = false;
                    }

                    if (enemySprite.spritePos.Y > 350f && enemySprite.spritePos.X > 200f && enemySprite.spritePos.X < 790f && !enemySprite.flipped)
                    {
                        enemySprite.spritePos.X += 2;
                        enemySprite.flipped      = false;
                    }
                    else if (enemySprite.spritePos.Y > 350f && !enemySprite.flipped && enemySprite.spritePos.X == 790f)
                    {
                        enemySprite.flipped = true;
                    }
                    if (enemySprite.spritePos.Y > 350f && enemySprite.flipped && enemySprite.spritePos.X > 600)
                    {
                        enemySprite.spritePos.X -= 2;
                    }
                    else if (enemySprite.spritePos.Y > 350f && enemySprite.flipped && enemySprite.spritePos.X <= 600f)
                    {
                        enemySprite.flipped = false;
                    }
                }
            }

            if (!playerSprite.dead)
            {
                playerSprite.Update(gameTime, levels[levelNumber], enemySprites[levelNumber], walls[levelNumber]); //Updating the PlayerSprite Class
            }
            blasts.RemoveAll(kiBlast => kiBlast.dead);                                                             //Removing the blasts when they are declared dead
            //Resetting the players position on death as long as the lives are greater than 0
            if (playerSprite.dead && lives > 0)
            {
                playerSprite = new PlayerSprite(playersheetTxr, whiteBox, new Vector2(50, 430), hitSound, jumpSound);
                lives--;
            }
            //If your lives reach 0 it loads the gameover screen and stops the music
            if (lives <= 0)
            {
                levelNumber = 4;
                MediaPlayer.Stop();
            }
            base.Update(gameTime);
        }