Proyecto-Videojuego

Juego de Tablero en Java

Simulador de consola en Java donde enemigos persiguen a aliados en un tablero con muros como obstáculos. Los aliados pueden recoger objetos (escudos, armas, estrellas) para sobrevivir. Pensado como ejercicio de POO para el ciclo DAM: herencia, paquetes, arrays bidimensionales e IA con campo de visión.

Aspecto en consola

[=][=][=][=][=][=][=][=][=][=][=][=][=][=][=]...
[=] .  .  .  S  .  o  .  .  .  .  .  .  . [=]
[=] .  #  .  .  o  .  .  W  .  .  .  .  . [=]
[=] .  #  . [=][=][=] .  o  .  .  o  .  . [=]
[=] .  .  .  .  .  *  .  .  .  .  .  .  . [=]
Simbolo Entidad/Objeto Comportamiento
` # ` Enemigo Persigue al aliado mas cercano dentro de su vision
` o ` Aliado Huye de enemigos, busca objetos activamente
[=] Muro Obstaculo fijo, no se puede atravesar
` S ` Escudo Absorbe daño al aliado que lo recoge
` W ` Arma Aumenta el contraataque del aliado
` * ` Estrella Invencibilidad temporal (efecto rainbow al moverse)

Caracteristicas

Parametros configurables (en App.java)

// Tablero
final int FILAS = 20;
final int COLUMNAS = 20;
final int NUM_ENEMIGO = 30;
final int NUM_ALIADO = 20;
final int NUM_MURO = 60;
final int PROB_PEGAR_MURO = 70;

// Objetos
final int NUM_ESCUDO = 5;
final int NUM_ARMA = 3;
final int NUM_ESTRELLA = 2;
final int TURNOS_SPAWN_OBJETO = 150;

// Stats de aliados
final int VIDA_ALIADO = 100;
final int DANIO_BASE_ALIADO_MIN = 3;
final int DANIO_BASE_ALIADO_MAX = 5;
final int VISION_ALIADO = 5;

// Stats de enemigos
final int VIDA_ENEMIGO = 100;
final int DANIO_ENEMIGO_MIN = 20;
final int DANIO_ENEMIGO_MAX = 30;
final int VISION_ENEMIGO = 5;

Estructura del proyecto

src/
├── App.java              main: tablero, game loop, renderizado
├── entidades/
│   ├── Entidad.java      clase abstracta: movimiento, combate, anti-oscilacion
│   ├── Enemigo.java      persecucion con vision y daño configurable
│   ├── Aliado.java       huida, busqueda de objetos, invencibilidad
│   └── Muro.java         obstaculo fijo
├── objetos/
│   ├── Objeto.java       clase abstracta de objetos recogibles
│   ├── Escudo.java       absorbe daño
│   ├── Arma.java         aumenta contraataque
│   └── Estrella.java     invencibilidad temporal
└── utils/
    └── Posicion.java     coordenada (fila, columna)
bin/                      bytecode compilado

Compilar y ejecutar

javac -d bin src/utils/*.java src/objetos/*.java src/entidades/*.java src/App.java
java -cp bin App