Beispiel #1
0
        /// <summary>
        /// On charge nos variables
        /// </summary>
        public void LoadContent()
        {
            this.menuManager.LoadContent();
            this.menuManager.MenuCourant = this.menuManager.TrouverMenu("MainMenu");

            // Créer un nouveau SpriteBatch, utilisée pour dessiner les textures.
            this.spriteBatch = new SpriteBatch(this.graphics.GraphicsDevice);

            // Charger les sprites.
            JoueurSprite.LoadContent(this.GetContent(), this.graphics);
            ArrierePlanEspace.LoadContent(this.GetContent(), this.graphics);
            Obus.LoadContent(this.GetContent(), this.graphics);
            EnnemiShip.LoadContent(this.GetContent(), this.graphics);
            EnnemiSpinner.LoadContent(this.GetContent(), this.graphics);
            PowerUp_Fire_Shot.LoadContent(this.GetContent(), this.graphics);
            PowerUp_Energy_Ball.LoadContent(this.GetContent(), this.graphics);
            PowerUp_One_Projectile.LoadContent(this.GetContent(), this.graphics);
            PowerUp_Three_Projectile.LoadContent(this.GetContent(), this.graphics);
            PowerUp_Two_Projectile.LoadContent(this.GetContent(), this.graphics);

            this.policePetit = this.GetContent().Load <SpriteFont>(@"Pipeline/Polices/PoliceItem");
            this.policeGrand = this.GetContent().Load <SpriteFont>(@"Pipeline/Polices/PoliceTitre");

            // Créer les sprites du jeu. Premièrement le sprite du joueur centrer au bas de l'écran. On limite ensuite
            // ses déplacements à l'écran.
            this.vaisseauJoueur            = new JoueurSprite(this.graphics.GraphicsDevice.Viewport.Width / 8f, this.graphics.GraphicsDevice.Viewport.Height / 2f);
            this.vaisseauJoueur.BoundsRect = new Rectangle(0, 0, this.graphics.GraphicsDevice.Viewport.Width, this.graphics.GraphicsDevice.Viewport.Height);
            this.vaisseauJoueur.ShootObus += Shoot;
            this.vaisseauJoueur.NbVies     = 3;

            this.bruitageRamasser = this.GetContent().Load <SoundEffect>(@"Pipeline\SoundFX\pickup");

            // Créer ensuite les sprites représentant les arrière-plans.
            this.arrierePlanEspace = new ArrierePlanEspace(this.graphics);

            // Charger le bruitage de fond du jeu.
            this.bruitageFond = this.GetContent().Load <Song>(@"Pipeline\Songs\scifi072");

            this.mainmenuImage = this.GetContent().Load <Texture2D>(@"ArrieresPlans\mainmenu.jpg");

            // Charger les textures associées aux effets visuels gérées par Game.
            this.particulesExplosions = this.GetContent().Load <Texture2D>(@"Explosion\explosionAsteroides");
            bruitageExplosion         = this.GetContent().Load <SoundEffect>(@"Pipeline\SoundFX\explosion001");

            // Paramétrer la musique de fond et la démarrer.
            MediaPlayer.Volume      = 0.05f;    // pour mieux entendre les autres effets sonores
            MediaPlayer.IsRepeating = true;
            MediaPlayer.Play(bruitageFond);
            MediaPlayer.Pause();
        }
Beispiel #2
0
        /// <summary>
        /// Routine mettant à jour les obus. Elle s'occupe de:
        ///   1 - Détruire les obus ayant quitté l'écran sans collision
        ///   2 - Déterminer si un des obus a frappé un sprite, et si c'est le cas
        ///       détruire les deux sprites (probablement un astéroïde)
        ///   3 - Mettre à jour la position des obus existants.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected void UpdateObus(GameTime gameTime)
        {
            // Identifier les obus ayant quitté l'écran.
            foreach (Obus obus in this.listeObusJoueur)
            {
                if (obus.Position.X + obus.Width > this.graphics.GraphicsDevice.Viewport.Width + obus.Width ||
                    obus.Position.X < 0 ||
                    obus.Position.Y < 0 ||
                    obus.Position.Y - obus.Height > this.graphics.GraphicsDevice.Viewport.Height)
                {
                    listeObusFini.Add(obus);
                }
            }

            foreach (Obus obus in this.listeObusEnnemis)
            {
                if (obus.Position.X + obus.Width > this.graphics.GraphicsDevice.Viewport.Width - obus.Width ||
                    obus.Position.X < 0 ||
                    obus.Position.Y < 0 ||
                    obus.Position.Y - obus.Height > this.graphics.GraphicsDevice.Viewport.Height)
                {
                    listeObusFini.Add(obus);
                }
            }

            // Determiner si un obus a frappé un astéroïde, et si c'est le cas détruire les deux sprites.
            foreach (Obus obus in this.listeObusJoueur)
            {
                // Premièrement, est-ce que l'obus a touché un astéroïde?
                EnnemiSprite cible = (EnnemiSprite)obus.Collision(this.listeEnnemis);
                // Si oui, détruire les deux sprites impliqués et produire une explosion
                if (cible != null && obus.Source != cible)
                {
                    cible.Health -= obus.Damage;
                    this.CreerExplosion(cible, this.particulesExplosions, gameTime, 0.5f);
                    listeObusFini.Add(obus);
                    if (cible.Health < 1)
                    {
                        // Détruire la cible.
                        this.listeEnnemis.Remove(cible);

                        points += 10f;
                        if (points % 100 == 0)
                        {
                            probEnnemis += 0.005f;
                        }

                        // Créer un nouvel effet visuel pour l'explosion.
                        this.CreerExplosion(cible, this.particulesExplosions, gameTime, 1f);

                        // Activer l'effet sonore de l'explosion.
                        bruitageExplosion.Play(0.25f, 0f, 0f);

                        if (randomPowerup.NextDouble() <= probPowerUp)
                        {
                            PowerUp powerup;
                            if (randomPowerup.NextDouble() > 0.5f)
                            {
                                if (probEnnemis / 0.005f == 1)
                                {
                                    powerup = new PowerUp_One_Projectile(cible.Position);
                                }
                                else if (probEnnemis / 0.005f == 2)
                                {
                                    if (randomPowerup.NextDouble() > 0.75f)
                                    {
                                        powerup = new PowerUp_One_Projectile(cible.Position);
                                    }
                                    else
                                    {
                                        powerup = new PowerUp_Two_Projectile(cible.Position);
                                    }
                                }
                                else
                                {
                                    if (randomPowerup.NextDouble() > 0.5f)
                                    {
                                        powerup = new PowerUp_Three_Projectile(cible.Position);
                                    }
                                    else
                                    {
                                        if (randomPowerup.NextDouble() > 0.5f)
                                        {
                                            powerup = new PowerUp_One_Projectile(cible.Position);
                                        }
                                        else
                                        {
                                            powerup = new PowerUp_Two_Projectile(cible.Position);
                                        }
                                    }
                                }
                            }
                            else
                            {
                                if (randomPowerup.NextDouble() > 0.5f)
                                {
                                    powerup = new PowerUp_Fire_Shot(cible.Position);
                                }
                                else
                                {
                                    powerup = new PowerUp_Energy_Ball(cible.Position);
                                }
                            }
                            this.listePowerUp.Add(powerup);
                        }
                    }
                }
            }

            foreach (Obus obus in this.listeObusEnnemis)
            {
                if (!vaisseauJoueur.IsRespawned && obus.Collision(this.vaisseauJoueur) && obus.Source != vaisseauJoueur)
                {
                    vaisseauJoueur.Health -= obus.Damage;
                    this.CreerExplosion(vaisseauJoueur, this.particulesExplosions, gameTime, 0.5f);
                    // Détruire la cible et l'obus.
                    //this.listeEnnemis.Remove(cible);
                    listeObusFini.Add(obus);

                    if (vaisseauJoueur.Health < 1)
                    {
                        vaisseauJoueur.IsRespawned  = true;
                        this.vaisseauJoueur.NbVies -= 1;
                        // Créer un nouvel effet visuel pour l'explosion.
                        this.CreerExplosion(vaisseauJoueur, this.particulesExplosions, gameTime, 1f);
                        this.vaisseauJoueur.Position = this.vaisseauJoueur.PositionInitiale;
                        // Activer l'effet sonore de l'explosion.
                        bruitageExplosion.Play(0.25f, 0f, 0f);
                    }
                }
            }

            // Se débarasser des obus n'étant plus d'aucune utilité.
            foreach (Obus obus in listeObusFini)
            {
                if (obus.Source == vaisseauJoueur)
                {
                    this.listeObusJoueur.Remove(obus);
                }
                else
                {
                    this.listeObusEnnemis.Remove(obus);
                }
            }

            // Mettre à jour les obus existants.
            foreach (Obus obus in this.listeObusJoueur)
            {
                obus.Update(gameTime, this.graphics);
            }

            foreach (Obus obus in this.listeObusEnnemis)
            {
                obus.Update(gameTime, this.graphics);
            }
        }