Exemple #1
0
        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();
            }
        }
Exemple #3
0
        /// <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;
        }
Exemple #7
0
 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));
     }
 }
Exemple #8
0
        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;
                    }
                }
            }
        }