Clon de Space Invaders en primera persona desarrollado con JavaFX 3D. Los invasores forman una cuadrícula en el espacio y avanzan hacia ti mientras los eliminas desde una perspectiva FPS.
- Java 21+ (probado con OpenJDK 24)
- Maven 3.8+
mvn javafx:runEsto descarga las dependencias de JavaFX automáticamente, compila el proyecto y lanza el juego.
Si solo quieres compilar sin ejecutar:
mvn compile| Tecla | Acción |
|---|---|
A / D |
Desplazarse izquierda / derecha |
W / S |
Desplazarse arriba / abajo |
← ↑ → ↓ |
Mover la mira |
SPACE / Click |
Disparar |
Ratón |
Apuntar (alternativo a las flechas) |
P |
Pausar / reanudar |
ENTER |
Iniciar partida (pantalla de título) |
H |
Ver Hall of Fame (pantalla de título) |
ESC |
Volver (Hall of Fame) |
La cámara se sitúa en la posición del jugador mirando hacia los invasores. La cuadrícula de fondo y el campo de estrellas dan sensación de profundidad. Cuando los invasores se acercan demasiado, la pantalla se tiñe de rojo como aviso de peligro.
La dificultad aumenta progresivamente en cada nivel:
- Más filas y columnas de invasores
- Mayor velocidad de movimiento y cadencia de disparo
- Aparecen tipos de enemigos más resistentes:
| Tipo | Color | Vidas | Puntos |
|---|---|---|---|
| Básico | Verde | 1 | 10 |
| Rápido | Cyan | 1 | 20 |
| Resistente | Naranja | 2 | 30 |
| Élite | Rojo | 2 | 50 |
Al destruir un invasor hay una probabilidad de que suelte un power-up que viaja hacia tu posición:
| Símbolo | Nombre | Efecto | Duración |
|---|---|---|---|
| R | Rapid Fire | Duplica la cadencia de disparo | 8 s |
| S | Shield | Absorbe un impacto | Hasta recibir daño |
| M | Multi Shot | Dispara 3 balas a la vez | 10 s |
| V | Speed Boost | Aumenta la velocidad de movimiento | 8 s |
| + | Extra Life | Otorga una vida extra | Permanente |
| x2 | Score x2 | Duplica los puntos obtenidos | 12 s |
- Crea una clase que implemente
com.spaceinvaders.powerup.PowerUp - Regístrala en
PowerUpRegistry:
PowerUpRegistry.register(MiNuevoPowerUp::new);Los 10 mejores puntajes se guardan en ~/.space-invaders-scores.txt. Al terminar una partida con puntaje suficiente, se pide el nombre del jugador.