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