Ejemplo n.º 1
0
        public void spawnEnemy(Enemy enemy)
        {
            bool succes = true;
            if (Main.instance.EnemyList.Count >= 1)
            {
                for (int j = 0; j < Main.instance.EnemyList.Count; j++)
                {
                    Enemy xEnemy = Main.instance.EnemyList[j];
                    if (HitManager.KollisionSprite(enemy.getSkin(), enemy.getLocation(), xEnemy.getSkin(), xEnemy.getLocation()))
                    {
                        succes = false;
                        break;

                    }
                }
                if (succes == true)
                {
                    Main.instance.EnemyList.Add(enemy);
                }

            }
            else
            {
                succes = true; //unötig
                Main.instance.EnemyList.Add(enemy);
            }
        }
Ejemplo n.º 2
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);
        }