Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }