Skip to content

francordara/class-emblem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Class Emblem

Juego táctico por turnos con arquitectura MVP, navegación por pila y vista por consola.

El sistema permite que dos jugadores controlen ejércitos en un tablero, seleccionen unidades, ejecuten acciones y jueguen hasta que uno derrote al “Lord” rival.


Características principales

  • Juego por turnos: cada jugador actúa de a uno.
  • Unidades con estadísticas, rango, movimiento, equipamiento y habilidades.
  • Tablero cargado desde CSV, con distintos tipos de terreno.
  • Elección de unidades, acciones por menú y flujo guiado.
  • Emboscadas, desplazamiento, uso de ítems, y chequeo de ganador.
  • Vista por consola con JLine (estilos, colores, input robusto).
  • Navegación con pila de Presenters mediante un Navegador propio.

Arquitectura

El proyecto está organizado en tres capas:

✔ Modelo (lógica del juego)

Incluye:

  • Juego, Jugador, AdminJugadores
  • Unidad, Estadisticas, Utilizables
  • Tablero, Casilla, Terreno

El modelo encapsula absolutamente toda la lógica del juego, manteniendo un estado consistente.

✔ Vista (interacción con el usuario)

Una única implementación:

  • VistaMenuConsola (usa Terminal y LineReader de JLine)

La vista solo:

  • muestra mapas, mensajes y opciones,
  • recibe input del usuario,
  • nunca ejecuta lógica del juego.

✔ Presenters (controladores de flujo)

Cada pantalla/estado del juego es un Presenter.
Ejemplos:

  • PresenterMenuPrincipal
  • PresenterSeleccionarUnidad
  • PresenterDatosUnidad
  • PresenterTerminarTurno
  • PresenterRendirse
  • PresenterGanador

Cada presenter implementa:

MenuComando ejecutar();

Y devuelve un comando que indica al Navegador cómo continuar.


Navegación del sistema

El flujo de pantallas lo controla:

  • Navegador
  • Comandos:
    • PushearMenuComando
    • PopearMenuComando
    • PushearBorrarMenuComando
    • SalirMenuComando

La navegación funciona como una pila:

  • push() → entrar a un menú
  • pop() → volver
  • pushBorrarPila() → reiniciar flujo
  • salir() → terminar juego

Cómo ejecutar

Requisitos

  • Java 17 o superior
  • Consola compatible con ANSI/JLine
  • Archivos CSV dentro de /data
    • mapa.csv
    • ejercito_azul.csv
    • ejercito_rojo.csv

Compilar

javac -d bin $(git ls-files '*.java')

Ejecutar

java -cp bin Main

También puede ejecutarse el archivo Main desde IntelliJ/VS Code.


Estructura del proyecto

TP2-SUPERLOGICO/
  data/
    mapa.csv
    ejercito_azul.csv
    ejercito_rojo.csv
  src/
    modelo/          -> lógica del juego
    vista/           -> Vista por consola (JLine)
    presentador/     -> Presenters
    presentador/comandos/ -> Comandos de navegación
    io/              -> Parser CSV
    Main.java

Flujo básico de juego

  1. Se carga el juego desde los CSV con JuegoFactory.
  2. Se muestra el Menú Principal:
    • Seleccionar unidad
    • Terminar turno
    • Rendirse
    • Salir
  3. Al seleccionar una unidad:
    • Se ven sus estadísticas
    • Se puede:
      • Ver utilizables
      • Desplegar / mover
      • Preparar emboscada
  4. Cada acción devuelve un comando que modifica la pila del Navegador.
  5. El juego termina cuando un Lord muere.
  6. PresenterGanador permite:
    • Jugar de nuevo
    • Salir del juego

CSVs utilizados

mapa.csv

Matriz de terrenos:

LLANURA,BOSQUE,AGUA,...

ejercito_azul.csv

id;nombre;reino;x;y;hp;atk;def;mov;arma;tipo;...
A1;Lord Azul;AZUL;2;2;22;6;3;4;Espada;FISICO;...

Lo mismo para ejercito_rojo.csv.


✔ Conclusiones del sistema

  • El programa usa una arquitectura ordenada y modular, con responsabilidades separadas.
  • La lógica del juego está totalmente encapsulada en el Modelo.
  • La Vista solo maneja la interacción con el usuario.
  • Los Presenters controlan el flujo, y pueden encadenarse fácilmente.
  • El Navegador organiza las pantallas mediante una pila de comandos.

About

Juego táctico por turnos en Java desarrollado con arquitectura MVP. Implementa un sistema de combate en tablero cargado por CSV, renderizado en consola (JLine) y navegación basada en pila.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages