Jeu UFO Attack DIY avec Arduino UNO et Afficheur MAX7219
Composants et Fournitures
| Composant | Quantité |
|---|---|
| Arduino UNO | 1 |
| Module Matrice de Points MAX7219 « 4 en 1 » | 1 |
| Connecteur DB9 9 Broches (pour joystick Atari) | 1 |
| Transistor NPN Usage Général | 1 |
| Plaque d'Essai (Breadboard) | 1 |
| Buzzer Piézo Passif Adafruit | 1 |
| Fils de Liaison Mâle/Femelle | 5 |
| Fils de Liaison (génériques) | 10 |
| Résistance 1 kΩ | 1 |
| Joystick Compatible Atari 9 Broches | 1 |
À Propos du Projet
J'ai créé ce jeu en utilisant un Arduino UNO, un ensemble de 4 matrices MAX7219 et des composants d'un kit de démarrage Arduino.
Le code a été écrit par moi-même et utilise les bibliothèques Max72xxPanel, Adafruit GFX et SPI.
Lancez-vous et abattez des OVNI ! :-)
Chaque niveau impose un nombre cible d'OVNI à détruire avant l'apparition du boss.
Le jeu nécessite un joystick compatible Atari 9 broches. Si vous en avez un vieux qui traîne, remettez-le en service ! Sinon, vous pouvez en fabriquer un. Je travaille sur une version portable pour les futures itérations.
Fonctionnement du Jeu
- Contrôles : Joystick 9 broches (Haut, Bas, Gauche, Droite, Feu)
- Affichage : 4 matrices 8×8 en cascade (32×8 pixels total)
- Niveaux : 10 niveaux de difficulté croissante
- Ennemis : OVNI classiques, Rebondisseurs (Bouncers), Chuteurs (Fallers), Monteurs (Risers), Mini-boss LT, Boss final
- Audio : Effets sonores via buzzer (tirs, explosions, sirène boss)
- Score : 10 pts/OVNI, 20 pts/Rebondisseur, 70 pts/LT, 100×niveau pts/Boss
Code Source Complet
Le code complet est trop long pour être affiché ici dans son intégralité, mais voici les points clés :
Configuration Matérielle
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
const int pinCS = 10;
const int numberOfHorizontalDisplays = 4;
const int numberOfVerticalDisplays = 1;
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
Sprites (Bitmaps 8×8)
// Vaisseau joueur
const unsigned char ship[] PROGMEM = { 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
// OVNI
const unsigned char ufo[] PROGMEM = { 0x40, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
// Explosion
const unsigned char explosion[] PROGMEM = { 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00 };
// Boss
const unsigned char boss[] PROGMEM = { 0x18, 0x24, 0x42, 0xff, 0x24, 0xff, 0x7e, 0x3c };
Logique Principale
- Boucle
loop(): Gère l'affichage, les entrées joystick, la génération d'ennemis (timers), les collisions, les tirs joueur/ennemis, les combats de boss, et le changement de niveau. - Génération d'ennemis : Basée sur des timers (
millis()) avec intervalles configurables par niveau. - Détection de collisions : Vérification pixel-par-pixel entre projectiles/ennemis et joueur/ennemis/projectiles ennemis.
- Combat de boss : Sirène d'alerte, patterns de tir multiples, invocation de sbires (niveaux 4+), barre de vie.
- Progression : 10 niveaux avec augmentation de la fréquence d'apparition, vitesse, et vie du boss.
Fonctions Clés
| Fonction | Rôle |
|---|---|
Ticker() |
Défilement du titre, score, game over, nouveau niveau |
JoystickControl() |
Lecture entrées + déplacement vaisseau + tir |
LaserControl() |
Déplacement laser joueur + collisions tous ennemis |
SpawnTimer() |
Gestion timers d'apparition ennemis |
BossBattle() / BossControl() |
Déclenchement et IA du boss |
ShipCollision() |
Détection collisions joueur vs tout |
GameOver() / ShipHit() |
Gestion vies, fin de partie, réinitialisation |
Schéma de Câblage
Le schéma de câblage complet est disponible dans les fichiers du projet. Points clés :
- MAX7219 : DIN → MOSI (11), CLK → SCK (13), CS → Pin 10
- Joystick : Broches 2-6 (UP, DOWN, LEFT, RIGHT, TRIGGER) en INPUT_PULLUP
- Buzzer : Pin 9
- L298N (si utilisé pour version motorisée) : ENA→5, IN1→6, IN2→7
Évolutions Futures
- Version portable autonome (batterie + écran + joystick intégrés)
- Ajout d'effets sonores plus riches
- Mode multijoueur
- Éditeur de niveaux
Processus de fabrication
- Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
- Effet feu à l'eau : Projet Arduino UNO + Neopixel Stick
- Horloge 3D RGB Arduclock – Montre LED Bluetooth avec horloge temps réel
- Surveillance de la Qualité de l'Eau : Système Arduino MKR1000 pour Rivières et Lacs
- Construire un Iron Man animé avec Arduino : capteurs, sons et relais
- Jeu interactif joystick + LEDs avec Arduino
- Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
- Construire un bras robotique 3D fonctionnel piloté par Arduino – Guide pas à pas
- Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D