/// </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); }
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); }