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); }
// Même méthode que testCollision mais spécifique aux fantomes. // Permet de considérer la zone de départ (map i,j =2) comme une collision. public static Boolean testCollisionFantom(IAFantom iaFantom, String direction) { // On initialise une collision à false par défaut bool collision = false; // On récupère la position X/Y arrondie du pacman/fantome dans un tableau // On convertit la position x/y de pixel vers une case [i,j] de la matrice ObjetAnime objetAnime = iaFantom._fantom; int[] position = getPositionMatrice(objetAnime.Position.X, objetAnime.Position.Y); int j = position[0]; int i = position[1]; // Puis on test si le déplacement est possible selon le déplacement // On récupère la carte byte[,] map = Pacman.getMap(); int VX = Pacman.getVX(); int VY = Pacman.getVY(); // on met à jour la position du fantôme en cas de hors limite iaFantom.updatePosition(); // Si la case suivante est pas un mur // il y a collision // R L U D pour Right Left Up Down if (direction == "R") { if (j >= VY - 1) // Si dépasse de la matrice, amène de l'autre côté de l'écran { j = -1; } if (map[i, j + 1] == 0 || map[i, j + 1] == 2) { collision = true; } } else if (direction == "L") { if (j <= 1) // Si dépasse de la matrice, amène de l'autre côté de l'écran { j = VY; } if (map[i, j - 1] == 0 || map[i, j - 1] == 2) { collision = true; } } else if (direction == "U") { if (i <= 1) // Si dépasse de la matrice, amène de l'autre côté de l'écran { i = VX; } if (map[i - 1, j] == 0 || map[i - 1, j] == 2) { collision = true; } } else if (direction == "D") { if (i >= VX - 1) // Si dépasse de la matrice, amène de l'autre côté de l'écran { i = -1; } if (map[i + 1, j] == 0 || map[i + 1, j] == 2) { collision = true; } } return(collision); }