예제 #1
0
        public static Boolean testMiam(JoueurPacman joueurPacman)
        {
            Boolean bmiam = false;
            // On récupère la position X/Y arrondie du pacman dans un tableau
            // On convertit la position x/y de pixel vers une case [i,j] de la matrice
            ObjetAnime objetAnime = joueurPacman._pacman;

            int[] position = Moteur2D.getPositionMatrice(objetAnime.Position.X, objetAnime.Position.Y);
            int   j        = position[0];
            int   i        = position[1];

            // Puis on test si le miam est possible
            byte[,] map = Pacman.getMap();
            if (map[i, j] == 1)
            {
                bmiam     = true;
                map[i, j] = 10;
                Pacman.setMap(map);
                ajouterScore(5);
            }
            else if (map[i, j] == 3)
            {
                bmiam     = true;
                map[i, j] = 2;
                Pacman.setMap(map);
                ajouterScore(100);
                // activer immortalité
                // fuite des fantome
                // chgt textures
            }
            else if (map[i, j] == 4)
            {
                bmiam     = true;
                map[i, j] = 10;

                Pacman.setPouvoirBool(true);
                joueurPacman.Pouvoir = true;
                Pacman.setPouvoirTime(0);

                Pacman.setMap(map);
                ajouterScore(50);
            }

            return(bmiam);
        }
예제 #2
0
        public void goLeft()
        {
            Vector2 p;

            if (!Moteur2D.testCollisionFantom(this, "L"))
            {
                // Est-ce qu'on est tout à gauche ?
                if (fantom.Position.X > minX)
                {
                    p               = fantom.Position;
                    p.X            -= fantom.Vitesse.Y;
                    fantom.Position = p;
                }
                else // arrive de l'autre côté de l'écran
                {
                    p               = fantom.Position;
                    p.X             = maxX;
                    fantom.Position = p;
                }
                // Si l'utilisateur se déplace vers la gauche,
                // réinitialise le booléen de décalage
                alreadyShiftLeft = false;
            }
            // Si on a une colision et que l'utilisateur n'a pas encore été décalé,
            // on le décale vers la gauche de 8px et le bool passe à true.
            else if ((fantom.Position.X % 20 != 0) && (alreadyShiftLeft == false))
            {
                alreadyShiftLeft = true;
                p                     = fantom.Position;
                p.X                  -= 8;
                fantom.Position       = p;
                this.alreadyCollision = true;
            }
            else // bloqué
            {
                alreadyCollision = true;
            }
            // Effectue un nouveau déplacement si une collision apparait ou un chemin lattérale
            if (fantom.Position.X % 20 == 0 && (!Moteur2D.testCollisionFantom(this, "U") || !Moteur2D.testCollisionFantom(this, "D")))
            {
                this.alreadyCollision = true;
            }
        }
예제 #3
0
        public void goDown()
        {
            Vector2 p;

            if (!Moteur2D.testCollisionFantom(this, "D"))
            {
                // Est-ce qu'on est tout en bas ?
                if (fantom.Position.Y < maxY)
                {
                    p               = fantom.Position;
                    p.Y            += fantom.Vitesse.Y;
                    fantom.Position = p;
                }
                else // arrive de l'autre côté de l'écran
                {
                    p               = fantom.Position;
                    p.Y             = minY;
                    fantom.Position = p;
                }
                // Si l'utilisateur se déplace vers le bas,
                // réinitialise le booléen de décalage
                alreadyShiftDown = false;
            }
            // Si on a une colision et que l'utilisateur n'a pas encore été décalé,
            // on le décale vers le bas de 8px et le bool passe à true.
            else if ((fantom.Position.Y % 20 != 0) && (alreadyShiftDown == false))
            {
                alreadyShiftDown = true;
                p                     = fantom.Position;
                p.Y                  += 8; // 8 et non 10 pour éviter l'effet "téléportation"
                fantom.Position       = p;
                this.alreadyCollision = true;
            }
            else // bloqué
            {
                alreadyCollision = true;
            }
            // Effectue un nouveau déplacement si une collision apparait ou un chemin lattérale.
            if (fantom.Position.Y % 20 == 0 && (!Moteur2D.testCollisionFantom(this, "R") || !Moteur2D.testCollisionFantom(this, "L")))
            {
                this.alreadyCollision = true;
            }
        }
예제 #4
0
        public void goUpFirst()
        {
            Vector2 p;

            if (!Moteur2D.testCollision(this, "U"))
            {
                // Est-ce qu'on est tout en haut ?
                if (fantom.Position.Y > minY)
                {
                    p               = fantom.Position;
                    p.Y            -= fantom.Vitesse.Y;
                    fantom.Position = p;
                }
                else // arrive de l'autre côté de l'écran
                {
                    p               = fantom.Position;
                    p.Y             = maxY;
                    fantom.Position = p;
                }
                // Si l'utilisateur se déplace vers le haut,
                // réinitialise le booléen de décalage
                alreadyShiftUp = false;
            }
            // Si on a une colision et que l'utilisateur n'a pas encore été décalé,
            // on le décale vers le haut de 8px et le bool passe à true.
            else if ((fantom.Position.Y % 20 != 0) && (alreadyShiftUp == false))
            {
                alreadyShiftUp = true;
                p                     = fantom.Position;
                p.Y                  -= 8;
                fantom.Position       = p;
                this.alreadyCollision = true;
                this.FirstMove        = false;
            }
            // Effectue un nouveau déplacement si une collision apparait ou un chemin lattérale.
            // Fin du premier mouvement
            else if (Moteur2D.testCollision(this, "U") || !Moteur2D.testCollision(this, "R") || !Moteur2D.testCollision(this, "L"))
            {
                this.FirstMove        = false;
                this.alreadyCollision = true;
            }
        }
예제 #5
0
        public override void Update(GameTime gameTime)
        {
            Vector2 p;

            // La classe Controls contient les constantes correspondantes aux contrôles définies sur la plate-forme
            // et des méthodes, pour chaque action possible dans le jeu, qui vérifient si les contrôles correspondants
            // ont été "enclenchés"
            if (Controls.CheckActionDown())
            {
                if (!Moteur2D.testCollision(this, "D"))
                {
                    // Est-ce qu'on est tout en bas ?
                    if (pacman.Position.Y + pacman.Size.X < maxY)
                    {
                        p               = pacman.Position;
                        p.Y            += pacman.Vitesse.Y;
                        pacman.Position = p;
                    }
                    else // arrive de l'autre côté de l'écran
                    {
                        p               = pacman.Position;
                        p.Y             = minY;
                        pacman.Position = p;
                    }
                    // Si l'utilisateur se déplace vers le bas,
                    // réinitialise le booléen de décalage
                    alreadyShiftDown = false;
                    // change texture
                    if (gameTime.TotalGameTime.TotalSeconds >= nextBlinkTime)
                    {
                        textureChange = !textureChange;
                        nextBlinkTime = gameTime.TotalGameTime.TotalSeconds + 0.2;
                    }
                    if (textureChange)
                    {
                        this._pacman.Texture = Game.Content.Load <Texture2D>(@"images\pacmanBas1");
                    }
                    else
                    {
                        this._pacman.Texture = Game.Content.Load <Texture2D>(@"images\pacmanBas0");
                    }
                }
                // Si on a une colision et que l'utilisateur n'a pas encore été décalé,
                // on le décale vers le bas de 8px et le bool passe à true.
                else if ((pacman.Position.Y % 20 != 0) && (alreadyShiftDown == false))
                {
                    alreadyShiftDown = true;
                    p               = pacman.Position;
                    p.Y            += 8; // 8 et non 10 pour éviter l'effet "téléportation"
                    pacman.Position = p;
                }
                Boolean miam = Miam.testMiam(this);
            }
            else if (Controls.CheckActionUp())
            {
                if (!Moteur2D.testCollision(this, "U"))
                {
                    // Est-ce qu'on est tout en haut ?
                    if (pacman.Position.Y > minY)
                    {
                        p               = pacman.Position;
                        p.Y            -= pacman.Vitesse.Y;
                        pacman.Position = p;
                    }
                    else // arrive de l'autre côté de l'écran
                    {
                        p               = pacman.Position;
                        p.Y             = maxY - 20;
                        pacman.Position = p;
                    }
                    // Si l'utilisateur se déplace vers le haut,
                    // réinitialise le booléen de décalage
                    alreadyShiftUp = false;
                }
                // Si on a une colision et que l'utilisateur n'a pas encore été décalé,
                // on le décale vers le haut de 8px et le bool passe à true.
                else if ((pacman.Position.Y % 20 != 0) && (alreadyShiftUp == false))
                {
                    alreadyShiftUp = true;
                    p               = pacman.Position;
                    p.Y            -= 8;
                    pacman.Position = p;
                }
                Boolean miam = Miam.testMiam(this);

                if (gameTime.TotalGameTime.TotalSeconds >= nextBlinkTime)
                {
                    textureChange = !textureChange;
                    nextBlinkTime = gameTime.TotalGameTime.TotalSeconds + 0.2;
                }
                if (textureChange)
                {
                    this._pacman.Texture = Game.Content.Load <Texture2D>(@"images\pacmanHaut1");
                }
                else
                {
                    this._pacman.Texture = Game.Content.Load <Texture2D>(@"images\pacmanHaut0");
                }
            }
            else if (Controls.CheckActionLeft())
            {
                if (!Moteur2D.testCollision(this, "L"))
                {
                    // Est-ce qu'on est tout à gauche ?
                    if (pacman.Position.X > minX)
                    {
                        p               = pacman.Position;
                        p.X            -= pacman.Vitesse.Y;
                        pacman.Position = p;
                    }
                    else // arrive de l'autre côté de l'écran
                    {
                        p               = pacman.Position;
                        p.X             = maxX;
                        pacman.Position = p;
                    }
                    // Si l'utilisateur se déplace vers la gauche,
                    // réinitialise le booléen de décalage
                    alreadyShiftLeft = false;
                }
                // Si on a une colision et que l'utilisateur n'a pas encore été décalé,
                // on le décale vers la gauche de 8px et le bool passe à true.
                else if ((pacman.Position.X % 20 != 0) && (alreadyShiftLeft == false))
                {
                    alreadyShiftLeft = true;
                    p               = pacman.Position;
                    p.X            -= 8;
                    pacman.Position = p;
                }
                Boolean miam = Miam.testMiam(this);

                if (gameTime.TotalGameTime.TotalSeconds >= nextBlinkTime)
                {
                    textureChange = !textureChange;
                    nextBlinkTime = gameTime.TotalGameTime.TotalSeconds + 0.2;
                }
                if (textureChange)
                {
                    this._pacman.Texture = Game.Content.Load <Texture2D>(@"images\pacmanGauche1");
                }
                else
                {
                    this._pacman.Texture = Game.Content.Load <Texture2D>(@"images\pacmanGauche0");
                }
            }
            else if (Controls.CheckActionRight())
            {
                if (!Moteur2D.testCollision(this, "R"))
                {
                    // Est-ce qu'on est tout à droite ?
                    if (pacman.Position.X < maxX)
                    {
                        p               = pacman.Position;
                        p.X            += pacman.Vitesse.Y;
                        pacman.Position = p;
                    }
                    else // arrive de l'autre côté de l'écran
                    {
                        p               = pacman.Position;
                        p.X             = minX;
                        pacman.Position = p;
                    }
                    // Si l'utilisateur se déplace vers la droite,
                    // réinitialise le booléen de décalage
                    alreadyShiftRight = false;
                }
                // Si on a une colision et que l'utilisateur n'a pas encore été décalé,
                // on le décale vers la droite de 8px et le bool passe à true.
                else if ((pacman.Position.X % 20 != 0) && (alreadyShiftRight == false))
                {
                    alreadyShiftRight = true;
                    p               = pacman.Position;
                    p.X            += 8;
                    pacman.Position = p;
                }
                Boolean miam = Miam.testMiam(this);

                if (gameTime.TotalGameTime.TotalSeconds >= nextBlinkTime)
                {
                    textureChange = !textureChange;
                    nextBlinkTime = gameTime.TotalGameTime.TotalSeconds + 0.2;
                }
                if (textureChange)
                {
                    this._pacman.Texture = Game.Content.Load <Texture2D>(@"images\pacmanDroite1");
                }
                else
                {
                    this._pacman.Texture = Game.Content.Load <Texture2D>(@"images\pacmanDroite0");
                }
            }

            base.Update(gameTime);
        }