Proyecto01

Idear un juego para la terminal que cumpla con las siguiente base:

  1. Un tablero (matriz) de cartas de la baraja.

  2. Un jugador que se desplaza por el tablero.

  3. Una narrativa.

  4. Reglas ideadas.

  5. Niveles generados manualmente [preferible] o al azar.

 ጰ   4♥  K♣  8♦
 2♠  A♥ 10♣  J♦
 9♣  7♠  5♥  🚪

Fecha límite de entrega 24 de octubre de 2026 a la medianoche en repositorio individual de control de versiones. Evaluación:

  1. [10%] Buen uso de control de versiones (commits, ignores). Estructura de directorios. Compilación automática (Makefile).

  2. [10%] Análisis (readme): Diseño del juego: narrativa, reglas, tutorial, ejemplos de ejecución. Instrucciones para compilar y correr la solución (build).

  3. [10%] Diseño orientado a objetos (UML) de la solución usando Mermaid en la subcarpeta design.

  4. [20%] Apego a las convenciones de estilos de Google y Sun (linting). Documentación de interfaces (javadoc): propósito, parámetros, supuestos (contratos). Documentación de implementaciones: comentarios en los cuerpos de subrutinas de lo que no es trivial.

  5. [10%] Clase controladora del juego. Manejo de eventos de teclado. Controla a los demás objetos del juego. Carga el siguiente nivel si el jugador resuelve el anterior.

  6. [10%] Clase para representar al jugador, su estado y progreso por el juego. Debe permitir continuar el nivel por el que quedó el jugador la última vez que corrió el programa.

  7. [20%] Clase para representar el nivel del juego. Matriz de cartas. Aplica las reglas escogidas del juego. Carga el nivel de un archivo [preferible]. Si crea cartas al azar, debe asegurarse de que el nivel sea resoluble. Debe imprimirse en la salida estándar, considerando que el jugador y la puerta, además de las cartas.

  8. [10%] Clase para representar una carta. Debe cargarse de archivo e imprimirse en la salida estándar. Debe aplicar su efecto al jugador.