protected override void Update(GameTime gameTime) { // Allows the game to exit if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); //Wenn gestartet if (Active == true) { KeyboardState currentKeyboard = Keyboard.GetState(); if (currentKeyboard.IsKeyDown(Keys.A) && p.getX() >= 5) { p.setX(p.getX() - 7.0f); } if (currentKeyboard.IsKeyDown(Keys.D) && p.getX() <= graphics.PreferredBackBufferWidth - 64) { p.setX(p.getX() + 7.0f); } if (currentKeyboard.IsKeyDown(Keys.Space)) { if (gameTime.TotalGameTime.TotalMilliseconds - LaserCooldown > 250 - ((p.getFireSpeed() - 7) * 10)) { Vector2 vec = p.getLocation(); vec.X = p.getX() + 18f; vec.Y = p.getY() + 64f; ProjectileList.Add(new Projectile(p.getFireSpeed(), vec, LaserNormalPicture)); LaserCooldown = gameTime.TotalGameTime.TotalMilliseconds; LaserLaunchSound.Play(); } } if (currentKeyboard.IsKeyDown(Keys.Enter)) { if (gameTime.TotalGameTime.TotalMilliseconds - RocketCooldoown > 10000 - ((p.getRocketSpeed() - 4) * 1500)) { Vector2 vec = p.getLocation(); vec.X = p.getX() + 24f; vec.Y = p.getY() + 64f; Projectile rocket = new Projectile(p.getRocketSpeed(), vec, RocketPicture); rocket.setDamage(10); rocket.setSkin(RocketPicture); ProjectileList.Add(rocket); SoundEffectInstance fx = RocketLaunchSound.CreateInstance(); fx.Play(); RocketLaunchSoundInstance = fx; RocketCooldoown = gameTime.TotalGameTime.TotalMilliseconds; } } if (currentKeyboard.IsKeyDown(Keys.P) || currentKeyboard.IsKeyDown(Keys.Escape)) { Active = false; Paused = true; } if (gameTime.TotalGameTime.TotalMilliseconds - EnemySpawnCooldown > 5000) { int random = rand(1, 4); if (random == 1) { Enemy enemy = new Enemy(EnemyClasses.Difficulty.EASY); em.spawnEnemy(enemy); EnemySpawnCooldown = gameTime.TotalGameTime.TotalMilliseconds; } else if (random == 2) { Enemy enemy = new Enemy(EnemyClasses.Difficulty.NORMAL); em.spawnEnemy(enemy); EnemySpawnCooldown = gameTime.TotalGameTime.TotalMilliseconds; } else if (random == 3) { Enemy enemy = new Enemy(EnemyClasses.Difficulty.HARD); em.spawnEnemy(enemy); EnemySpawnCooldown = gameTime.TotalGameTime.TotalMilliseconds; } int HardCoreRandom = rand(0, 10); if (kills >= 15 && HardCoreRandom <= 5) { Enemy enemy = new Enemy(EnemyClasses.Difficulty.HARDCORE); em.spawnEnemy(enemy); EnemySpawnCooldown = gameTime.TotalGameTime.TotalMilliseconds; } } for (int i = ProjectileList.Count - 1; i >= 0; i--) { Projectile projectile = ProjectileList[i]; projectile.setY(projectile.getY() + projectile.getSpeed()); if (projectile.getY() > graphics.PreferredBackBufferWidth) { ProjectileList.Remove(projectile); } //Kollisions abfrage bei treff von feind for (int j = 0; j < EnemyList.Count; j++) { Enemy enemy = EnemyList[j]; if (HitManager.KollisionSprite(projectile.getSkin(), projectile.getLocation(), enemy.getSkin(), enemy.getLocation())) { enemy.setLife(enemy.getLife() - projectile.getDamage()); if (enemy.getLife() <= 0) { EnemyList.Remove(enemy); kills++; //Mehr leben bei kill von feind auf : HARD //Und schneller ballern if (enemy.getDifficulty() == EnemyClasses.Difficulty.HARD) { p.setLife(p.getLife() + 1); p.setFireSpeed(p.getFireSpeed() + 0.5f); } //Und schneller raketen nachladen //bei HARD CORE if (enemy.getDifficulty() == EnemyClasses.Difficulty.HARDCORE) { p.setRocketSpeed(p.getRocketSpeed() + 1); p.setLife(p.getLife() + 2); p.setFireSpeed(p.getFireSpeed() + 2); } } ProjectileList.Remove(projectile); //Soud bei racketet treffer if (projectile.getSkin() == RocketPicture) { RocketLaunchSoundInstance.Stop(); RocketExplodeSound.Play(); } } } } //Alle feinde feuern for (int j = 0; j < EnemyList.Count; j++) { Enemy enemy = EnemyList[j]; if (gameTime.TotalGameTime.TotalMilliseconds - enemy.getFireCooldown() > enemy.getReloadSpeed()) { enemy.fire(); enemy.setFireCooldown(gameTime.TotalGameTime.TotalMilliseconds); } } //Feind trifft Spieler for (int i = EnemyProjectileList.Count - 1; i >= 0; i--) { Projectile projectile = EnemyProjectileList[i]; projectile.setY(projectile.getY() - projectile.getSpeed()); if (projectile.getY() == graphics.PreferredBackBufferHeight) { EnemyProjectileList.Remove(projectile); } if (HitManager.KollisionSprite(projectile.getSkin(), projectile.getLocation(), p.getSkin(), p.getLocation())) { p.setLife(p.getLife() - projectile.getDamage()); if (p.getLife() <= 0) { Exit(); } EnemyProjectileList.Remove(projectile); } } //Spieler Prijectile triff auf gegner projectile for (int i = ProjectileList.Count - 1; i >= 0; i--) { Projectile projectile = ProjectileList[i]; for (int j = EnemyProjectileList.Count - 1; j >= 0; j--) { Projectile eProjectile = EnemyProjectileList[j]; if (HitManager.KollisionSprite(projectile.getSkin(), projectile.getLocation(), eProjectile.getSkin(), eProjectile.getLocation())) { EnemyProjectileList.Remove(eProjectile); ProjectileList.Remove(projectile); if (projectile.getSkin() == RocketPicture || eProjectile.getSkin() == RocketPicture) { if (RocketLaunchSoundInstance != null) { if (RocketLaunchSoundInstance.State == SoundState.Playing) RocketLaunchSoundInstance.Stop(); } } } } } } //Wenn das spiel nicht Läuft else { mouse = new Rectangle(Mouse.GetState().X, Mouse.GetState().Y, 10, 10); if (HitManager.KollisionRechteck(mouse, PlayButton.getRectangle())) { if (Mouse.GetState().LeftButton != OldMouseState.LeftButton) { Active = true; Paused = false; } } } base.Update(gameTime); }
public void fire() { if (this.difficulty == EnemyClasses.Difficulty.EASY) { Projectile laser = new Projectile(fireSpeed, new Vector2(this.getX() + 8, this.getY()), Main.instance.LaserEnemyPicture); laser.fire(); } if (this.difficulty == EnemyClasses.Difficulty.NORMAL) { Vector2 vec = this.location; vec.X = vec.X + 16; Projectile laser = new Projectile(fireSpeed, vec, Main.instance.LaserEnemyPicture); laser.fire(); vec.X = vec.X + 128 - 32 - 16; laser = new Projectile(fireSpeed, vec, Main.instance.LaserEnemyPicture); laser.fire(); } if (this.difficulty == EnemyClasses.Difficulty.HARD) { for (int i = 0; i < 260; i = i + 60) { Vector2 vec = new Vector2(location.X + i, location.Y + 20); Projectile laser = new Projectile(fireSpeed, vec, Main.instance.LaserEnemyPicture); laser.fire(); } for (int i = 30; i < 260; i = i + 60) { Vector2 vec = new Vector2(location.X + i, location.Y); Projectile laser = new Projectile(fireSpeed, vec, Main.instance.LaserEnemyPicture); laser.fire(); } } if (this.difficulty == EnemyClasses.Difficulty.HARDCORE) { Projectile laser = new Projectile(fireSpeed, new Vector2(location.X + 15, location.Y + 100), Main.instance.LaserEnemyPicture); laser.fire(); laser = new Projectile(fireSpeed, new Vector2(location.X + 230, location.Y + 100), Main.instance.LaserEnemyPicture); laser.fire(); if (SpecialAttackLoad == 5) { Projectile rocket = new Projectile(4f, new Vector2(location.X + 80, location.Y + 30), Main.instance.RocketPicture); rocket.fire(); rocket = new Projectile(4f, new Vector2(location.X + 160, location.Y + 30), Main.instance.RocketPicture); rocket.fire(); SpecialAttackLoad = 0; } if (SpecialAttackLoad == 3) { for (int i = 0; i < 260; i = i + 60) { Vector2 vec = new Vector2(location.X + i, location.Y + 20); Projectile laser2 = new Projectile(fireSpeed, vec, Main.instance.LaserEnemyPicture); laser2.fire(); } for (int i = 30; i < 260; i = i + 60) { Vector2 vec = new Vector2(location.X + i, location.Y); Projectile laser2 = new Projectile(fireSpeed, vec, Main.instance.LaserEnemyPicture); laser2.fire(); } } SpecialAttackLoad++; } Main.instance.LaserLaunchSound.Play(); }