Construye tu Juego "UFO Attack" con Arduino UNO y Pantalla MAX7219
Componentes y suministros
| Componente | Cantidad |
|---|---|
| Arduino UNO | 1 |
| Módulo matriz de puntos MAX7219 "4 en 1" (32x8) | 1 |
| Conector DB9 hembra 9 pines (para joystick Atari) | 1 |
| Transistor NPN de propósito general | 1 |
| Protoboard | 1 |
| Zumbador pasivo piezoeléctrico (Adafruit) | 1 |
| Cables jumper macho/hembra | 5 |
| Cables jumper genéricos | 10 |
| Resistencia 1 kΩ | 1 |
| Joystick compatible Atari 9 pines | 1 |
Sobre este proyecto
He creado este juego usando un Arduino UNO, un conjunto de 4 matrices MAX7219 ("4 en 1") y componentes de un kit de inicio Arduino. El código es propio y usa las librerías Max72xxPanel, Adafruit GFX y SPI.
¡Dale caña y derriba OVNIs! Cada nivel tiene un objetivo de OVNIs a destruir antes de que aparezca el jefe final. Requiere un joystick compatible Atari de 9 pines; si tienes uno viejo, ¡dale una segunda vida! Estoy trabajando en una versión portátil para futuras actualizaciones.
Código
UFO Attack - Código completo (C/C++)
/* UFO ATTACK! - Escrito por Anthony Clarke */
/* Algunas líneas tomadas de ejemplos open source, marcadas en comentarios */
#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 8x8 guardados en PROGMEM: nave, OVNI, explosión, reboteador, jefe, etc.
const unsigned char ship [] PROGMEM = { 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
const unsigned char ufo [] PROGMEM = { 0x40, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
// ... (resto de sprites: explosion, bouncer, boss, faller, riser, LT, ufoLaser, bossBoom1/2)
// Variables de juego: estado, posiciones, velocidades, temporizadores, puntuación, vidas, nivel, etc.
bool gameStart = false;
int up = 2, down = 3, left = 4, right = 5, trigger = 6;
// ... (más variables)
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(up, INPUT_PULLUP); pinMode(down, INPUT_PULLUP);
pinMode(left, INPUT_PULLUP); pinMode(right, INPUT_PULLUP);
pinMode(trigger, INPUT_PULLUP);
matrix.setIntensity(0);
// Configuración posición y rotación de las 4 matrices
matrix.setPosition(0, 3, 0); matrix.setPosition(1, 2, 0);
matrix.setPosition(2, 1, 0); matrix.setPosition(3, 0, 0);
matrix.setRotation(0, 3); matrix.setRotation(1, 3);
matrix.setRotation(2, 3); matrix.setRotation(3, 3);
matrix.fillScreen(LOW);
}
void loop() {
if (!gameStart) Ticker(true);
SpawnTimer(); JoystickControl(); UfoControl(); BouncerControl();
LaserControl(); ScreenLimit(); BossBattle(); BossControl();
UFOLaserControl(); LTControl(); FallerControl(); RiserControl();
ShipCollision();
matrix.write(); delay(50); matrix.fillScreen(LOW);
}
// Funciones: Level(), Ticker(), JoystickControl(), ShootLaser(), LaserControl(),
// Boom(), ScreenLimit(), SpawnTimer(), SpawnUFO(), UfoControl(), SpawnBouncer(),
// BouncerControl(), SpawnFaller(), FallerControl(), SpawnRiser(), RiserControl(),
// SpawnLT(), LTControl(), BossBattle(), BossControl(), UFOLaserShoot(),
// UFOLaserControl(), ShipCollision(), GameOver(), ShipHit()
// ... (código completo en el repositorio / adjunto)
El código gestiona: menú titular con texto desplazable, control por joystick, disparo, múltiples tipos de enemigos (OVNIs, reboteadores, caídas, subidas, mini-jefe LT, jefe final), colisiones, puntuación, niveles progresivos (1-10), sonido por zumbador y pantallas de game over / victoria.
Esquemáticos
Esquema de cableado del juego UFO Attack (imagen adjunta).
Proceso de manufactura
- Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
- Efecto fuego con agua: Arduino UNO + Neopixel Stick
- Reloj 3D RGB Arduclock – Bluetooth, LED NeoPixel y RTC
- Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino
- Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
- Juego interactivo con joystick analógico y LEDs en Arduino
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Construye un Brazo Robótico Impreso en 3D Controlado por Arduino – Guía Paso a Paso
- Detector de Rango Portátil – Kit DIY Arduino Nano con HC-SR04, Batería 18650 y Carcasa Impresa en 3D
- Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
- Pequeño Rover con Arduino: Construye tu Robot Autónomo Evita Obstáculos