示例#1
0
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            if (CurrentGameState == GameState.MainMenu)
            {
                if (Keyboard.GetState().IsKeyDown(Keys.Enter))
                {
                    CurrentGameState = GameState.PlayingLvl1;
                }
            }

            else if (CurrentGameState == GameState.PlayingLvl1)
            {
                #region update_lvl1
                _hero.Update(gameTime);
                fire.Update(gameTime);
                foreach (MovingTiles tile in movingTiles)
                {
                    tile.Update(gameTime);
                }

                foreach (Enemy enemy in _Enemys)
                {
                    enemy.Update(gameTime);
                }

                foreach (coin coin in coins)
                {
                    coin.Update(gameTime);
                }

                if (Keyboard.GetState().IsKeyDown(Keys.Space) && pastkey.IsKeyUp(Keys.Space))
                {
                    if (_hero.direction)
                    {
                        BulletRight b = new BulletRight(bullet_afbeeldingRechts, (int)_hero.Positie.X + 50, (int)_hero.Positie.Y + 35);
                        bulletsright.Add(b);
                    }

                    else
                    {
                        BulletLeft b = new BulletLeft(bullet_afbeeldingLinks, (int)_hero.Positie.X - 50, (int)_hero.Positie.Y + 35);
                        bulletsleft.Add(b);
                    }
                }
                pastkey = Keyboard.GetState();


                foreach (BulletRight Bullet in bulletsright)
                {
                    Bullet.Update(gameTime);
                }

                foreach (BulletLeft Bullet in bulletsleft)
                {
                    Bullet.Update(gameTime);
                }

                CollisionsLvl1();

                for (int i = 0; i < bulletsright.Count; i++)
                {
                    //float oldstate = bulletsright[i].Positie.X;
                    if (bulletsright[i].Positie.X > (_hero.Positie.X + 400))
                    {
                        bulletsright.Remove(bulletsright[i]);
                    }
                }
                for (int i = 0; i < bulletsleft.Count; i++)
                {
                    //float oldstate = bulletsright[i].Positie.X;
                    if (bulletsleft[i].Positie.X < (_hero.Positie.X - 400))
                    {
                        bulletsleft.Remove(bulletsleft[i]);
                    }
                }


                if (_hero.IsMoving)
                {
                    camPos.X += _hero.VelocityX.X;
                }
                if (_hero.IsDead)
                {
                    camPos.X = 0;
                }
                #endregion
            }

            else if (CurrentGameState == GameState.PlayingSecretLvl)
            {
                _hero.Update(gameTime);

                CollisionsSecret();

                foreach (coin coin in coins_SecretLvl)
                {
                    coin.Update(gameTime);
                }
            }

            else if (CurrentGameState == GameState.PlayingLvl2)
            {
                _hero.Update(gameTime);
                foreach (MovingTiles tile in movingTiles_Lvl2)
                {
                    tile.Update(gameTime);
                }

                foreach (Enemy enemy in _EnemysLvl2)
                {
                    enemy.Update(gameTime);
                }

                if (Keyboard.GetState().IsKeyDown(Keys.Space) && pastkey.IsKeyUp(Keys.Space))
                {
                    if (_hero.direction)
                    {
                        BulletRight b = new BulletRight(bullet_afbeeldingRechts, (int)_hero.Positie.X + 50, (int)_hero.Positie.Y + 35);
                        bulletsright.Add(b);
                    }

                    else
                    {
                        BulletLeft b = new BulletLeft(bullet_afbeeldingLinks, (int)_hero.Positie.X - 50, (int)_hero.Positie.Y + 35);
                        bulletsleft.Add(b);
                    }
                }
                pastkey = Keyboard.GetState();

                foreach (BulletRight Bullet in bulletsright)
                {
                    Bullet.Update(gameTime);
                }

                foreach (BulletLeft Bullet in bulletsleft)
                {
                    Bullet.Update(gameTime);
                }

                foreach (coin coin in coins_Lvl2)
                {
                    coin.Update(gameTime);
                }

                endBoss.Update(gameTime);
                foreach (BulletEnemy Bullet in bulletEnemy)
                {
                    Bullet.Update(gameTime);
                }

                CollisionLvl2();

                for (int i = 0; i < bulletsright.Count; i++)
                {
                    if (bulletsright[i].Positie.X > (_hero.Positie.X + 400))
                    {
                        bulletsright.Remove(bulletsright[i]);
                    }
                }
                for (int i = 0; i < bulletsleft.Count; i++)
                {
                    if (bulletsleft[i].Positie.X < (_hero.Positie.X - 400))
                    {
                        bulletsleft.Remove(bulletsleft[i]);
                    }
                }

                for (int i = 0; i < bulletEnemy.Count; i++)
                {
                    if (bulletEnemy[i].Positie.X < 3500)
                    {
                        bulletEnemy.Remove(bulletEnemy[i]);
                    }
                }



                if (_hero.IsMoving)
                {
                    camPos.X += _hero.VelocityX.X;
                }
                if (_hero.IsDead)
                {
                    camPos.X = 0;
                }
            }


            base.Update(gameTime);
        }
示例#2
0
        float spawn = 0; // För att få en timer för enemy spawn och sånt.
        protected override void Update(GameTime gameTime)
        {
            MouseState mouse = Mouse.GetState();

            if (CurrentGameState == GameState.MainMenu)
            {
                pause = true; // När spelet startas är det i MainMenu och är i pause lägge.
            }
            if (CurrentGameState == GameState.GameOver)
            {
                Exit();
            }

            //Menu
            switch (CurrentGameState)
            {
            case GameState.MainMenu:

                if (buttonplay.isclicked == true)
                {
                    CurrentGameState = GameState.Playing;                                   // Om button är klickad så blir GameState till playing.
                }
                buttonplay.Update(mouse);

                break;

            case GameState.Playing:

                pause = false;     // Medans GameState är i playing så är spelet inte i pause.
                if (Keyboard.GetState().IsKeyDown(Keys.Escape) || hero.hp == 0)
                {
                    CurrentGameState = GameState.GameOver;
                }
                break;

            case GameState.GameOver:
                WriteHighscore();
                break;
            }

            if (pause == false) // Om spelet inte är i pause så laddas allt i denna text upp.
            {
                //Enemy
                spawn += (float)gameTime.ElapsedGameTime.TotalSeconds; // Gör en timer för enemy.

                foreach (Enemy enemies in enemy)                       // För varje enemy så skrivs koden som är i enemy.Update.
                {
                    enemies.Update(graphics.GraphicsDevice);
                }

                LoadEnemies(); // Använder metoden som är i LoadEnemies.

                // IsTouchingLeft?
                foreach (Enemy enemies in enemy) // En kod som är som Intersect som kollar om enemy rörs på vänster sidan av hero.
                {
                    if (hero.rectangle.Right > enemies.rectangle.Left &&
                        hero.rectangle.Left < enemies.rectangle.Left &&
                        hero.rectangle.Bottom > enemies.rectangle.Top &&
                        hero.rectangle.Top < enemies.rectangle.Bottom)
                    {
                        enemies.hp--; // Enemy förlorar ett hp om den rörs.
                        hero.hp--;    // Hero förlorar ett hp om den rörs.
                    }
                }

                //Hero
                if (hero.position.X <= 0)
                {
                    hero.position.X = 1; // Gör så att hero inte kan gå utanför X = 0.
                }
                if (hero.position.X >= graphics.PreferredBackBufferWidth - hero.texture.Width)
                {
                    hero.position.X = graphics.PreferredBackBufferWidth - hero.texture.Width - 1; // Gör så att hero inte kan gå utanför Width på spel skärmen.
                }
                hero.Update(gameTime);                                                            // Använder hero.Update koden som skrevs i Hero.

                //Bullet
                if (Keyboard.GetState().IsKeyDown(Keys.Space) && pastkey.IsKeyUp(Keys.Space))
                {
                    Shoot();                   // Gör så att om space blev nertryckt och är uppe igen so används koden i metoden Shoot.
                }
                pastkey = Keyboard.GetState(); // För att se om en key är uppe igen.

                UpdateBullet();                // Använder koden i metoden UpdateBullet för hela spelet.

                foreach (Bullet bullets in bullet)
                {
                    bullets.Update();                                        // Använder koden som skrivs i Bullet.Update för alla bullets som görs.
                }
                foreach (Bullet bullets in bullet)                           // För varje bullet som görs u bullet listan.
                {
                    foreach (Enemy enemies in enemy)                         // För varje enemies som görs i listan enemy.
                    {
                        if (bullets.rectangle.Intersects(enemies.rectangle)) // Om bullet rör enemies rectangle så förlorar båda ett hp.
                        {
                            bullets.hp--;
                            enemies.hp--;
                        }
                    }
                }
            }

            base.Update(gameTime);
        }