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