示例#1
0
        public void gererSouris()
        {
            int  x, y;
            uint click = 0;

            // la fenêtre n'est pas active
            if (SDL.SDL_GetMouseFocus() == IntPtr.Zero)
            {
                return;
            }

            // récupére l'état des boutons de la souris appuyés
            click = SDL.SDL_GetGlobalMouseState(out x, out y);
            // récupére les coordonnées du curseur
            SDL.SDL_GetMouseState(out x, out y);
            // on itére à travers tout les boutons pour vérifier si notre curseur
            // est dans le cadre du bouton
            foreach (Bouton bouton in boutons)
            {
                if (bouton.curseurDans(new Point(x, y)))
                {
                    boutonSel = bouton.getId();
                    // clic gauche détecté
                    if ((uint)(click & 1) == 1)
                    {
                        Sfx.JouerSon("clic_bouton");
                        gererActionBouton(boutons.Find((b) => b.getId() == boutonSel));
                    }
                }
            }
        }
示例#2
0
 public override void activer(Joueur joueur)
 {
     // L'effet par défaut du bonus est d'augmenter le nombre de bombes de 1
     joueur.incrementerMaxBombe();
     joueur.incrementerBombe();
     Sfx.JouerSon("bonus_bombe_plus");
 }
示例#3
0
        public override void gererTouches(byte[] etats)
        {
            // Retour au menu précédent
            if (etats[(int)SDL.SDL_Scancode.SDL_SCANCODE_ESCAPE] > 0)
            {
                Gfx.changerEcran(ecranPrecedent);
            }

            // page précédente
            if (etats[(int)SDL.SDL_Scancode.SDL_SCANCODE_LEFT] > 0)
            {
                gererActionBouton(boutons.Find((b) => b.getId() == 0));
            }

            // page suivante
            if (etats[(int)SDL.SDL_Scancode.SDL_SCANCODE_RIGHT] > 0)
            {
                gererActionBouton(boutons.Find((b) => b.getId() == 1));
            }

            // Equivalent du clic gauche pour sélectionner un bouton dans le menu
            if (etats[(int)SDL.SDL_Scancode.SDL_SCANCODE_RETURN] > 0)
            {
                if (boutonSel != -1)
                {
                    Sfx.JouerSon("clic_bouton");
                    gererActionBouton(boutons.Find((b) => b.getId() == boutonSel));
                }
            }
        }
示例#4
0
        public void mettreAJour()
        {
            DateTime      temps_actuel   = DateTime.Now;
            List <Joueur> joueurs_en_vie = joueurs.FindAll((j) => !j.estMort());

            // Si il ne reste aucun joueur en vie c'est la fin de la manche
            if (joueurs_en_vie.Count < 1)
            {
                if (tempsFinManche == DateTime.MinValue)
                {
                    tempsFinManche = temps_actuel;
                    // Arrêter la musique
                    Sfx.ArreterJouerMusique();
                }
            }
            // Si le temps est écoulé c'est la fin de la manche
            if (tempsImparti - (temps_actuel - tempsDebutManche).TotalSeconds < -1)
            {
                if (tempsFinManche == DateTime.MinValue)
                {
                    tempsFinManche = temps_actuel;
                    // Arrêter la musique
                    Sfx.ArreterJouerMusique();
                    // On joue le son temps_ecoule en cas de fin de manche par temps écoulé
                    Sfx.JouerSon("temps_ecoule");
                }
            }
            // Si il reste un joueur en vie il est déclaré vainqueur
            if (joueurs_en_vie.Count == 1)
            {
                if (tempsFinManche == DateTime.MinValue)
                {
                    tempsFinManche = temps_actuel;
                    // Arrêter la musique
                    Sfx.ArreterJouerMusique();
                    // Un joueur a gagné
                    raisonFinManche = joueurs_en_vie[0].getId();
                }
            }

            // On met à jour la map si la fin de manche n'est pas signalé
            if (tempsFinManche == DateTime.MinValue)
            {
                tempsRestant = tempsImparti - (long)(temps_actuel - tempsDebutManche).TotalSeconds;
                map.mettreAJour();
            }
            else
            {
                // On passe à la manche suivante au bout de 10 secondes
                if ((temps_actuel - tempsFinManche).TotalSeconds >= 10)
                {
                    tempsFinManche = DateTime.MinValue;
                    finDeLaManche();
                }
            }
        }
示例#5
0
 public override void activer(Joueur joueur)
 {
     // L'effet par défaut du bonus est de diminuer le nombre de bombes de 1
     if (joueur.getNbBombes() > 1)
     {
         joueur.decrementerMaxBombe();
         joueur.decrementerBombe();
     }
     Sfx.JouerSon(@"bonus_bombe_moins");
 }
示例#6
0
 public override void gererTouches(byte[] etats)
 {
     // Sélection du bouton précédent dans le menu
     if (etats[(int)SDL.SDL_Scancode.SDL_SCANCODE_UP] > 0)
     {
         // si le bouton est le premier on retourne au dernier bouton
         // sinon on cherche le dernier bouton avant le bouton sélectionné
         if (boutonSel == boutons.First().getId())
         {
             boutonSel = boutons.Last().getId();
         }
         else
         {
             boutonSel = boutons.Last((b) => b.getId() < boutonSel).getId();
         }
     } // Sélection du bouton suivant dans le menu
     else if (etats[(int)SDL.SDL_Scancode.SDL_SCANCODE_DOWN] > 0)
     {
         // si le bouton est le dernier on retourne au premier bouton
         // sinon on cherche le premier bouton après le bouton sélectionné
         if (boutonSel == boutons.Last().getId())
         {
             boutonSel = boutons.First().getId();
         }
         else
         {
             boutonSel = boutons.Find((b) => b.getId() > boutonSel).getId();
         }
     } // Retour au menu précédent
     else if (etats[(int)SDL.SDL_Scancode.SDL_SCANCODE_ESCAPE] > 0)
     {
         Gfx.changerEcran(ecranPrecedent);
     } // Equivalent du clic gauche pour sélectionner un bouton dans le menu
     else if (etats[(int)SDL.SDL_Scancode.SDL_SCANCODE_RETURN] > 0)
     {
         if (boutonSel != -1)
         {
             Sfx.JouerSon("clic_bouton");
             gererActionBouton(boutons.Find((b) => b.getId() == boutonSel));
         }
     }
 }
示例#7
0
 public override void activer(Joueur joueur)
 {
     // L'effet par défaut du bonus est de diminuer la portée de 1 case
     joueur.decrementerPorteeBombe();
     Sfx.JouerSon("bonus_portee_moins");
 }
示例#8
0
        public void explose()
        {
            int  _x = (int)position.X;
            int  _y = (int)position.Y;
            Bloc bloc_en_collision = null;

            // Disparition de la bombe
            tuer();
            // Jouer le son de l'explosion
            Sfx.JouerSon("explosion");
            // Apparition des flammes de l'explosion de la bombe
            map.ajoutEntite(new Flamme(_x, _y, proprietaire, map));
            for (int x = _x - 1; x >= _x - portee; x--)
            {
                bloc_en_collision = map.getBlocA(x, _y);
                if (bloc_en_collision == null)
                {
                    if (x != _x && x > 0 && x < Map.LARGEUR_GRILLE)
                    {
                        if (map.trouverEntite(x, _y, typeof(Flamme)).Count == 0)
                        {
                            map.ajoutEntite(new Flamme(x, _y, proprietaire, map));
                        }
                    }
                }
                else
                {
                    if (bloc_en_collision.GetType() != typeof(BlocIncassable) &&
                        bloc_en_collision.estSolide())
                    {
                        if (bloc_en_collision.getDurabilite() > 1)
                        {
                            bloc_en_collision.subiDegats();
                        }
                        else
                        {
                            map.detruireBlocA(x, _y);
                        }
                    }
                    break;
                }
            }

            for (int x = _x + 1; x <= _x + portee; x++)
            {
                bloc_en_collision = map.getBlocA(x, _y);
                if (bloc_en_collision == null)
                {
                    if (x != _x && x > 0 && x < Map.LARGEUR_GRILLE)
                    {
                        if (map.trouverEntite(x, _y, typeof(Flamme)).Count == 0)
                        {
                            map.ajoutEntite(new Flamme(x, _y, proprietaire, map));
                        }
                    }
                }
                else
                {
                    if (bloc_en_collision.GetType() != typeof(BlocIncassable) &&
                        bloc_en_collision.estSolide())
                    {
                        if (bloc_en_collision.getDurabilite() > 1)
                        {
                            bloc_en_collision.subiDegats();
                        }
                        else
                        {
                            map.detruireBlocA(x, _y);
                        }
                    }
                    break;
                }
            }

            for (int y = _y - 1; y >= _y - portee; y--)
            {
                bloc_en_collision = map.getBlocA(_x, y);
                if (bloc_en_collision == null)
                {
                    if (y != _y && y > 0 && y < Map.LONGUEUR_GRILLE)
                    {
                        if (map.trouverEntite(_x, y, typeof(Flamme)).Count == 0)
                        {
                            map.ajoutEntite(new Flamme(_x, y, proprietaire, map));
                        }
                    }
                }
                else
                {
                    if (bloc_en_collision.GetType() != typeof(BlocIncassable) &&
                        bloc_en_collision.estSolide())
                    {
                        if (bloc_en_collision.getDurabilite() > 1)
                        {
                            bloc_en_collision.subiDegats();
                        }
                        else
                        {
                            map.detruireBlocA(_x, y);
                        }
                    }
                    break;
                }
            }

            for (int y = _y + 1; y <= _y + portee; y++)
            {
                bloc_en_collision = map.getBlocA(_x, y);
                if (bloc_en_collision == null)
                {
                    if (y != _y && y > 0 && y < Map.LONGUEUR_GRILLE)
                    {
                        if (map.trouverEntite(_x, y, typeof(Flamme)).Count == 0)
                        {
                            map.ajoutEntite(new Flamme(_x, y, proprietaire, map));
                        }
                    }
                }
                else
                {
                    if (bloc_en_collision.GetType() != typeof(BlocIncassable) &&
                        bloc_en_collision.estSolide())
                    {
                        if (bloc_en_collision.getDurabilite() > 1)
                        {
                            bloc_en_collision.subiDegats();
                        }
                        else
                        {
                            map.detruireBlocA(_x, y);
                        }
                    }
                    break;
                }
            }
            proprietaire.incrementerBombe();
        }
示例#9
0
 public override void activer(Joueur joueur)
 {
     // L'effet par défaut du bonus est de diminuer la vitesse de 0.01f
     joueur.decrementerVitesse();
     Sfx.JouerSon("bonus_vitesse_moins");
 }
示例#10
0
 public override void activer(Joueur joueur)
 {
     // L'effet par défaut du bonus est d'augmenter la vitesse de 0.01f
     joueur.incrementerVitesse();
     Sfx.JouerSon("bonus_vitesse_plus");
 }
示例#11
0
 public override void activer(Joueur joueur)
 {
     // L'effet par défaut du bonus est d'augmenter la portée de 1 case
     joueur.incrementerPorteeBombe();
     Sfx.JouerSon("bonus_portee_plus");
 }