示例#1
0
        /// <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();
            }
        }
示例#2
0
        /// <summary>
        /// Permet de ramener les elements en place apres la mort du joueur (pacman) par un fantome
        /// </summary>
        internal void RéinitialiserAprèsMort()
        {
            RedessinerMur();
            RéinitialiserPositions();
            m_listeFantômesActifs.Clear();
            m_cptAction      = 0;
            m_cptFantômePeur = 0;
            m_listeFantômesMangers.Clear();
            m_cptFantômesMorts = 0;
            m_cptFruit         = FrameRateValue * 2;

            m_fruitActif = null; // on perd le fruit en cours
        }
示例#3
0
        /// <summary>
        /// Va tenter de faire apparraitre un fruit dans la carte de jeux
        /// une probabilite de 1 sur 80 en honneur a Pacman et sa date de sortie 1980
        /// </summary>
        private void VérifierApparitionFruit()
        {
            Random random = new Random();

            if (m_fruitActif == null && m_cptFruit != 0)
            {
                --m_cptFruit;
            }


            if (m_cptFruit == 0 && random.Next(0, 100) == 80)                          // une chance sur 80 a 60 fois par secondes
            {
                m_cptFruit   = FrameRateValue * 4 + (Niveau / 5 * FrameRateValue / 2); // 4 secondes + une demie seconde par niveau
                m_fruitActif = m_listeFruits.Dequeue();
            }
        }
示例#4
0
        /// <summary>
        /// Va generer tout les fruits relier au niveau actuel et les mettre dans une File
        /// </summary>
        internal void RemplirFruits()
        {
            m_fruitActif = null;
            m_listeFruits.Clear();

            Coordonnée centreXCase17 = new Coordonnée(CentreX, Grille.TrouverCoordonnéeCase(0, 17).Y);

            m_listeFruits.Enqueue(new FruitAnimable(FabriqueFruit.FabriquerCerise(new Coordonnée(centreXCase17))));

            if (Niveau >= 2)
            {
                m_listeFruits.Enqueue(new FruitAnimable(FabriqueFruit.FabriquerFraise(new Coordonnée(centreXCase17))));
            }
            if (Niveau >= 3)
            {
                m_listeFruits.Enqueue(new FruitAnimable(FabriqueFruit.FabriquerOrange(new Coordonnée(centreXCase17))));
            }

            if (Niveau >= 5)
            {
                m_listeFruits.Enqueue(new FruitAnimable(FabriqueFruit.FabriquerPomme(new Coordonnée(centreXCase17))));
            }

            if (Niveau >= 7)
            {
                m_listeFruits.Enqueue(new FruitAnimable(FabriqueFruit.FabriquerMelon(new Coordonnée(centreXCase17))));
            }

            if (Niveau >= 9)
            {
                m_listeFruits.Enqueue(new FruitAnimable(FabriqueFruit.FabriquerGalboss(new Coordonnée(centreXCase17))));
            }

            if (Niveau >= 11)
            {
                m_listeFruits.Enqueue(new FruitAnimable(FabriqueFruit.FabriquerCloche(new Coordonnée(centreXCase17))));
            }

            if (Niveau >= 13)
            {
                m_listeFruits.Enqueue(new FruitAnimable(FabriqueFruit.FabriquerCle(new Coordonnée(centreXCase17))));
            }
        }
示例#5
0
        /// <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;
        }