Le jeu PAC-MAN est un jeu d'arcade classique sorti en 1980 par Namco. Son principe est simple mais addictif :
1. Objectif du jeu
Le joueur contrôle Pac-Man, un personnage rond et jaune qui évolue dans un labyrinthe.
L’objectif est de manger tous les pac-gommes (petits points blancs) du labyrinthe pour passer au niveau suivant.
En même temps, Pac-Man doit éviter les fantômes qui patrouillent dans le labyrinthe.
2. Les fantômes
Quatre fantômes colorés poursuivent Pac-Man :
Blinky (rouge) : le plus rapide, il traque directement Pac-Man.
Pinky (rose) : tente d’anticiper les mouvements de Pac-Man.
Inky (bleu) : comportement imprévisible.
Clyde (orange) : alterne entre poursuite et fuite.
3. Les super pac-gommes
Il y a quatre grosses pac-gommes (une dans chaque coin du labyrinthe).
Quand Pac-Man en mange une, les fantômes deviennent bleus et vulnérables temporairement.
Pendant ce temps, Pac-Man peut les manger pour gagner des points supplémentaires.
Après quelques secondes, ils reviennent à leur état normal et continuent la poursuite.
4. Autres éléments
Des fruits bonus apparaissent à intervalles réguliers et rapportent des points supplémentaires.
l existe des tunnels sur les côtés du labyrinthe qui permettent à Pac-Man de se téléporter de l’autre côté.
5. Fin du jeu
Pac-Man perd une vie s’il est attrapé par un fantôme.
Le jeu se termine quand toutes les vies sont perdues.
Si le joueur mange toutes les pac-gommes d’un niveau, il passe au suivant avec une difficulté accrue.
Ce projet consiste à recréer une version simplifiée du jeu PAC-MAN en utilisant une carte Arduino UNO, un écran LCD I2C, un joystick pour les commandes et un buzzer pour les effets sonores.
a) Initialisation du système
L’Arduino initialise l’affichage LCD via l’interface I2C.
Le labyrinthe est affiché sous forme de caractères spéciaux (définis via lcd.createChar()
).
Pac-Man et les fantômes sont positionnés à leur point de départ.
b) Déplacement de Pac-Man
Le joystick permet de contrôler Pac-Man :
Axe X : Gauche/Droite
Axe Y : Haut/Bas
L’Arduino lit les valeurs du joystick et met à jour la position de Pac-Man à l’écran.
c) Détection des pac-gommes
Le programme détecte si Pac-Man passe sur une pac-gomme et l'efface.
Un compteur de score est incrémenté.
Un son est émis via le buzzer (tone(buzzer, fréquence, durée)
).
d) Déplacement des fantômes
Les fantômes suivent un chemin préprogrammé.
Ils sont affichés sur l’écran et mis à jour à intervalles réguliers.
Si Pac-Man rencontre un fantôme : on perd le jeu et un message "Game Over" s’affiche.
Arduino UNO :
La carte Arduino UNO est l'unité de contrôle du jeu.
Écran LCD I2C (16x2 ou 20x4) :
On utilise l'écran LCD I2C pour l'affichage des composants du jeu.
Joystick (Module XY) :
La manette(Joystick) permet de déplacer PAC-MAN dans les quatre directions :haut, bas, droite et gauche.
Buzzer :
Le Buzzer est utilisé pour les sons du jeu (manger une pac-gomme, attraper un fantôme, perdre une vie).
Fils de connexion
On utilise les fils de connexion pour relier tous les composants à l’Arduino
Plaque d'essai (Breadboard) :
On utilise la plaque d'essai pour faciliter le câblage des différents composants.
*
Joystick :
VRx : Connecté à l'entrée analogique A2 de la carte Arduino UNO.
VRy : Connecté à l'entrée analogique A3 de la carte Arduino UNO.
SW : Connecté à l'entrée numérique D2 de la carte Arduino UNO pour le bouton-poussoir.
GND : Connecté à broche GND de la carte Arduino UNO.
VCC : Connecté à broche 3V3 de la carte Arduino UNO.
2. Afficheur LCD :
SDA : Connecté à l'entrée analogique A4 de la carte Arduino UNO.
SCL : Connecté à l'entrée analogique A5 de la carte Arduino UNO.
GND : Connecté à broche GND de la carte Arduino UNO.
VCC : Connecté à broche 5V de la carte Arduino UNO.
3. Buzzer :
Connecter la broche (+) du buzzer à la sortie numérique D3 de l'Arduino UNO.
Relier l'autre broche (-) à GND de l'Arduino UNO.
Voici un programme Arduino pour une version simplifiée du jeu PAC-MAN :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
#include <Wire.h> #include <LiquidCrystal_I2C.h> #define JOY_X A0 #define JOY_Y A1 #define BUZZER 3 LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse I2C du LCD // Position initiale de Pac-Man int pacManX = 1, pacManY = 1; int score = 0; // Labyrinthe 16x2 (caractères spéciaux pour les murs) char maze[2][16] = { "#............#", "#............#" }; void setup() { lcd.init(); lcd.backlight(); pinMode(BUZZER, OUTPUT); drawMaze(); updatePacMan(); } void loop() { int x = analogRead(JOY_X); int y = analogRead(JOY_Y); int newX = pacManX; int newY = pacManY; // Lire le joystick pour déplacer Pac-Man if (x < 400) newX--; // Gauche if (x > 600) newX++; // Droite if (y < 400) newY--; // Haut if (y > 600) newY++; // Bas // Vérifier si le déplacement est valide if (isValidMove(newX, newY)) { pacManX = newX; pacManY = newY; // Vérifier si une pac-gomme est mangée if (maze[pacManY][pacManX] == '.') { maze[pacManY][pacManX] = ' '; // Effacer la pac-gomme score += 10; tone(BUZZER, 1000, 100); // Jouer un son } } updatePacMan(); delay(200); } // Fonction pour dessiner le labyrinthe void drawMaze() { lcd.clear(); for (int y = 0; y < 2; y++) { lcd.setCursor(0, y); lcd.print(maze[y]); } } // Vérifier si Pac-Man peut se déplacer bool isValidMove(int x, int y) { return (x >= 0 && x < 16 && y >= 0 && y < 2 && maze[y][x] != '#'); } // Mettre à jour l'affichage de Pac-Man void updatePacMan() { drawMaze(); lcd.setCursor(pacManX, pacManY); lcd.print("P"); // Afficher Pac-Man lcd.setCursor(0, 1); lcd.print("Score: " + String(score)); } |
Explication du programme :
1. Affichage du labyrinthe : Un tableau maze[2][16]
représente le terrain de jeu. #
pour les murs, .
pour les pac-gommes.
2. Déplacement avec le joystick : L’axe X permet d’aller à gauche/droite, l’axe Y pour monter/descendre.
3. Manger des pac-gommes : Si Pac-Man passe sur une pac-gomme (.
), elle est effacée et le score augmente.
4. Effet sonore : Le buzzer joue un son lorsqu’une pac-gomme est mangée.
5. Mise à jour de l’écran LCD : À chaque déplacement, l’affichage est actualisé.
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info