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