public void Tirage() { int TirageMonstre = new Random().Next(1); if (TirageMonstre == 3) { ChoixMonstre = 4; BossBarzak.Instance = null; Barzak = new BossBarzak(300); BossBarzak.Instance = Barzak; } else if (TirageMonstre == 2) { ChoixMonstre = 3; Troll.Instance = null; Trolly = new Troll(200); Troll.Instance = Trolly; } else if (TirageMonstre == 1) { ChoixMonstre = 2; Fantôme.Instance = null; Bhou = new Fantôme(100); Fantôme.Instance = Bhou; } else if (TirageMonstre == 0) { ChoixMonstre = 1; Gobelin.Instance = null; Gobi = new Gobelin(50); Gobelin.Instance = Gobi; } }
/// <summary> /// Permet de verifier si des collisions entre pacman et des objets (fantomes,fruits) arrivent ainsi que /// d'appliquer l'evenement relier au collision /// </summary> private void VérifierCollision() { Fantôme fantôme = m_listeFantômesActifs.Find(c => c.Coordonnée.EstProche(Pacman.Coordonnée, TailleCase / 4)); if (m_fruitActif != null && m_fruitActif.Coordonnée.EstProche(Pacman.Coordonnée, TailleCase / 4)) { MettreAJourScore(m_fruitActif.ObtenirValeurFruit()); m_fruitActif = null; } if (fantôme == null) { return; } if (fantôme.EstApeuré()) { MettreFantômeManger(fantôme); } else { m_nbVies--; RéinitialiserAprèsMort(); } }
/// <summary> /// Permet d'appliquer la bonne strategie de comportement selon le fantome /// </summary> /// <param name="p_fantôme">Le fantome a appliquer le comportement</param> /// <param name="p_pacman">Le pacman</param> /// <returns>Le deplacement que le fantome doit prendre</returns> public Déplacement AppliquerComportement(Fantôme p_fantôme, PacMan p_pacman) { switch (p_fantôme.ObtenirComportement()) { case TypeComportement.Blinky: { return(m_blinky.AppliquerInstinct(p_fantôme.Coordonnée, p_pacman.Coordonnée, p_pacman.DéplacementActuel, p_fantôme.EstApeuré())); } case TypeComportement.Pinky: { return(m_pinky.AppliquerInstinct(p_fantôme.Coordonnée, p_pacman.Coordonnée, p_pacman.DéplacementActuel, p_fantôme.EstApeuré())); } case TypeComportement.Inky: { return(m_inky.AppliquerInstinct(p_fantôme.Coordonnée, p_pacman.Coordonnée, p_pacman.DéplacementActuel, p_fantôme.EstApeuré())); } case TypeComportement.Clyde: { return(m_clyde.AppliquerInstinct(p_fantôme.Coordonnée, p_pacman.Coordonnée, p_pacman.DéplacementActuel, p_fantôme.EstApeuré())); } default: throw new ArgumentOutOfRangeException(); } }
/// <summary> /// Apres que les fantomes aillent ete manger, permet de savoir si un fantome doit etre relachger /// </summary> private void VérifierSiFantômeÀRelacher() { // On va relacher un fantome chaque 6 secondes - (1 demie secondes par niveau) if (--m_cptFantômesMorts % (FrameRateValue * 6 - (Niveau / 5 * FrameRateValue / 2)) == 0) { Fantôme fantôme = m_listeFantômesMangers.Dequeue(); m_listeFantômesActifs.Add(fantôme); fantôme.MettreAJourCoordonnée(Grille.TrouverCoordonnéeCase(14, 11)); } }
/// <summary> /// Action a faire lorsque Pacman mange un fantome /// </summary> /// <param name="fantôme">le fantome a retourner</param> private void MettreFantômeManger(Fantôme fantôme) { fantôme.RéinitialiserPosition(); m_listeFantômesActifs.Remove(fantôme); m_listeFantômesMangers.Enqueue(fantôme); m_cptFantômesMorts += (FrameRateValue * 6 - (Niveau / 5 * FrameRateValue / 2)); MettreAJourScore(PointagePremierFantôme * (int)Math.Pow(2, m_listeFantômesMangers.Count)); }
/// <summary> /// Constructeur par defaut d'une partie, va instancier tout les elements /// necessaire a la partie /// </summary> private Partie() { FrameRate(50); Score = 0; Record = 0; m_cptPointPourVie = 1; m_nbVies = 3; Grille = new GrilleJeu(false); Pacman = new PacMan(new Coordonnée(CentreX, Grille.TrouverCoordonnéeCase(0, 17).Y)); m_listeFantômes = new List <Fantôme>(); m_listeFantômesActifs = new List <Fantôme>(); m_listeFantômesMangers = new Queue <Fantôme>(); m_listeFruits = new Queue <FruitAnimable>(); m_fruitActif = null; m_cptFantômesMorts = 0; Blinky = new Fantôme(Grille.TrouverCoordonnéeCase(12, 13), CouleurFantôme.Blinky); Pinky = new Fantôme(Grille.TrouverCoordonnéeCase(17, 13), CouleurFantôme.Pinky); Inky = new Fantôme(Grille.TrouverCoordonnéeCase(12, 15), CouleurFantôme.Inky); Clyde = new Fantôme(Grille.TrouverCoordonnéeCase(17, 15), CouleurFantôme.Clyde); m_listeFantômes.AddRange(new[] { Blinky, Pinky, Inky, Clyde }); m_comportementFruit = new ComportementClyde(); // Les fruits vont avoir le meme comportement que Clyde (Aleatoire) m_ia = new IntelligenceArtificielle(); MurDejaDessiner = false; Niveau = 1; m_cptAction = 0; m_cptFantômePeur = 0; m_cptFruit = FrameRateValue * 2; }
public void BindingPVm() { PVM.DataBindings.Clear(); if (TirageJeu.ChoixMonstre == 1) { Gobi = Gobelin.Instance; PVM.DataBindings.Add(new Binding("Text", Gobi, "MVie", true)); } else if (TirageJeu.ChoixMonstre == 2) { Bhou = Fantôme.Instance; PVM.DataBindings.Add(new Binding("Text", Bhou, "MVie", true)); } else if (TirageJeu.ChoixMonstre == 3) { Trolly = Troll.Instance; PVM.DataBindings.Add(new Binding("Text", Trolly, "MVie", true)); } else if (TirageJeu.ChoixMonstre == 4) { Barzak = BossBarzak.Instance; PVM.DataBindings.Add(new Binding("Text", Barzak, "MVie", true)); } }
public static async void CombattreFantôme() { Joueur Vivi = Joueur.Instance; Fantôme Bhou = Fantôme.Instance; Query query = new Query(); Page page = Page.Instance; bool jeu = true; DelegAsync.MethAsyncTexteJ("Combat: un fantôme."); await Task.Delay(2000); while (jeu) { while (Vivi.Vivant && Bhou.Vivant) { Form1.PanelJeu.Invoke(new MethodInvoker(delegate { Vivi.LibereAttaque(); })); MesBouttons.stop.WaitOne(); await Task.Delay(3000); MesBouttons.stop.WaitOne(); Form1.PanelJeu.Invoke(new MethodInvoker(delegate { Vivi.BlockAttaque(); })); Bhou.Attaque(Vivi); if (Bhou.Degats == Bhou.AttaqueRapide && Vivi.Degats == Vivi.Bouclier || Bhou.Degats == Bhou.AttaqueLourde && Vivi.Degats == Vivi.AttaqueRapide || Bhou.Degats == Bhou.Bouclier && Vivi.Degats == Vivi.AttaqueLourde || Vivi.Degats == Vivi.Magie) { Bhou.SubirDegats(Vivi.Degats); MesLabels.PVM.Invoke(new MethodInvoker(delegate { Bhou.UpMVie(); })); if (Bhou.MVie > 0) { DelegAsync.MethAsyncTexteC("Ton attaque réussit.\nIl reste " + Convert.ToString(Bhou.MVie) + " point de vie au fantôme et tu en as encore " + Convert.ToString(Vivi.Vie) + " point de vies!"); await Task.Delay(3000); } else { DelegAsync.MethAsyncTexteJ("Le fantôme meurs!"); DelegAsync.MethAsyncTexteM(""); } } else if (Bhou.Degats == Bhou.AttaqueRapide && Vivi.Degats == Vivi.AttaqueLourde || Bhou.Degats == Bhou.AttaqueLourde && Vivi.Degats == Vivi.Bouclier || Bhou.Degats == Bhou.Bouclier && Vivi.Degats == Vivi.AttaqueRapide) { Vivi.SubitDegats(Bhou.Degats); MesLabels.PV.Invoke(new MethodInvoker(delegate { Vivi.UpVie(); })); if (Vivi.Vie > 0) { DelegAsync.MethAsyncTexteC("Le fantôme te touche.\nIl te reste " + Convert.ToString(Vivi.Vie) + " point de vie et le fantôme possède encore " + Convert.ToString(Bhou.MVie) + " point de vies!"); await Task.Delay(3000); } else { DelegAsync.MethAsyncTexteJ("Tu meurs!\nLe fantome se ris de toi!"); DelegAsync.MethAsyncTexteM(""); } } else { DelegAsync.MethAsyncTexteC("Le coup est contré!"); await Task.Delay(3000); } if (Vivi.Vivant && !Bhou.Vivant) { Vivi.Experience += 15; Vivi.NiveauGagner(); Stuff stuff = Stuff.Lotterie; stuff.EquipementLeger(); Vivi.PotionDeVie(); MesLabels.TexteCombat.Invoke(new MethodInvoker(delegate { Vivi.UpVie(); })); query.SauvegardeDuJeu(); jeu = false; Form1.PanelJeu.Invoke(new MethodInvoker(delegate { page.PageCombatFinit(); })); } else if (!Vivi.Vivant) { DelegAsync.MethAsyncTexteC("Perdu!!!"); jeu = false; } } } }