Jeu vaisseau spatial contrôlé par la carte Arduino UNO

Arduino UNO 11-02-25
82 0

Plan du tutorial

1- Présenter le jeu vaisseau spatial

2- Principe de notre jeu à réaliser

3- Matériel nécessaire

4- Schéma de câblage des composants du jeu

5- Programme Arduino

 

 

Présenter le jeu vaisseau spatial

Un jeu de vaisseau spatial est un type de jeu vidéo où le joueur contrôle un vaisseau qui doit naviguer dans l'espace. L'objectif peut varier : éviter des obstacles, détruire des ennemis, collecter des objets, ou atteindre une destination spécifique.

Les caractéristiques principales incluent :

Contrôle du vaisseau : déplacement dans plusieurs directions (haut, bas, gauche, droite) souvent avec des commandes pour tirer des projectiles.

Ennemis et obstacles : astéroïdes, vaisseaux ennemis, champs de mines, etc.

Power-ups : améliorations des armes, boucliers, vitesse, etc.

Score : points accumulés en détruisant des ennemis ou en survivant plus longtemps.

 

Principe de notre jeu à réaliser

Le joueur contrôle un vaisseau spatial qui doit survivre le plus longtemps possible en détruisant des ennemis avec des roquettes. Le score augmente à chaque ennemi éliminé. Le jeu se termine lorsque le vaisseau entre en collision avec un ennemi.

1. État Initial :

L’écran affiche "Arduino Space game".

Le joueur appuie sur le joystick pour commencer.

2. Phase de Jeu :

Déplacement du vaisseau dans les deux directions droite et gauche grâce au joystick.

Apparition des ennemis : des ennemis apparaissent sur l'écran.

Tirs de roquettes : le joueur tire des roquettes pour détruire les ennemis. Les roquettes se déplacent du bas vers le haut.

3. Gestion des Collisions :

Roquette vs Ennemi : si une roquette touche un ennemi : L’ennemi disparaît.

4. Fin de Partie :

Affichage de "Congratulations Game Won !!!" et du score final.

Possibilité de redémarrer la partie en appuyant sur le joystick.

 

Matériel nécessaire

Carte Arduino UNO

Arduino Uno

La carte Arduino UNO est le cerveau du jeu, gère la logique du gameplay, le traitement des entrées du joystick, l'affichage sur l’écran LCD et le contrôle du buzzer.

Fonctionnalités :

Lecture des valeurs analogiques du joystick.

Gestion des interruptions pour les tirs de roquettes.

Contrôle des signaux I2C pour l’écran LCD.

Commande du buzzer pour les effets sonores.

Afficheur LCD I2C (16x2 ou 20x4)

Pinouts of 1602 LCD display with I2C

L'écran affiche l’état du jeu : position du vaisseau, ennemis et roquettes.

Manette (Joystick Analogique)

La manette contrôle du vaisseau (haut/bas/gauche/droite) et tir de roquettes (clic du joystick).

Buzzer

Le Buzzer fournit des effets sonores pour améliorer l'immersion :

Fils de connexion

Fils de connexion

On utilise les fils de connexion pour relier tous les composants à l’Arduino

Plaque d'essai (Breadboard) :

plaque d'essai

On utilise la plaque d'essai pour faciliter le câblage des différents composants.

 

Schéma de câblage du projet

*

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.

 

Programme Arduino

 

Explication du Programme Arduino du Jeu de Vaisseau Spatial :

1. Inclusion des Bibliothèques et Initialisation de l'Écran

LiquidCrystal_I2C.h : pour contrôler l’écran LCD I2C (adresse 0x27, 16 colonnes, 2 lignes).

2. Définition des Broches et Variables

Joystick : contrôle le vaisseau et le tir.

Buzzer : émet des sons (tirs, explosions, game over).

Positions du vaisseau, des roquettes et des ennemis : gérées par des coordonnées X et Y.

Score : compteur des ennemis détruits.

3. Initialisation dans setup()

Initialisation de l’écran LCD avec rétroéclairage.

Pull-up interne pour le bouton du joystick (évite des résistances externes).

Générateur de nombres aléatoires pour la position des ennemis.

4. Boucle Principale loop()

Chaque cycle de la boucle met à jour le jeu :

1. Lecture du joystick (déplacement + tir)

2. Mise à jour de la roquette (avancée)

3. Mouvement de l’ennemi (vers la gauche)

4. Vérification des collisions (roquette/ennemi, vaisseau/ennemi)

5. Affichage sur l’écran LCD

6. Pause de 150 ms pour contrôler la vitesse du jeu.

5. Lecture du Joystick (readJoystick())

Déplacement vertical du vaisseau entre la ligne 0 et 1 de l’écran.

Tir de roquette lorsque le bouton du joystick est pressé (SW bas).

6. Gestion de la Roquette (updateRocket())

La roquette avance vers la droite.

Si elle sort de l’écran, elle disparaît.

7. Apparition des Ennemis (updateEnemy())

L’ennemi se déplace de droite à gauche.

Lorsqu’il sort de l’écran, il réapparaît aléatoirement en haut ou en bas.

8. Détection des Collisions (checkCollision())

Roquette vs Ennemi : explosion + gain de score + son.

Vaisseau vs Ennemi : Game Over immédiat.

9. Affichage sur l'Écran (displayGame())

Affichage de :

Le vaisseau >^

La roquette -

L’ennemi @

Le score en haut à droite.

10. Fin de Partie (gameOver())

Son d’alarme avec le buzzer.

Affichage du message de fin et du score final.

Redémarrage du jeu après un délai de 3 secondes.

11. Réinitialisation du Jeu (resetGame())

Remise à zéro des positions et du score pour un nouveau départ.

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

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.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali-Prof Info