Class Juego

java.lang.Object
Modelo.Juego
Direct Known Subclasses:
PasaPalabra, tresenraya, TresEnRaya

public abstract class Juego extends Object
Clase abstracta que representa un juego genérico dentro de la aplicación.

Define la estructura común a todos los juegos (nombre, estado de finalización y puntuaciones por jugador) y declara los métodos abstractos que cada subclase debe implementar con su propia lógica de juego.

Version:
1.0
Author:
JP
  • Field Details

    • nombreJuego

      protected String nombreJuego
      Nombre identificador del juego (ej: "PasaPalabra", "TresEnRaya").
    • descripcion

      protected String descripcion
      Descripción breve del juego mostrada en el menú de selección.
    • juegoFinalizado

      protected boolean juegoFinalizado
      Indica si el juego ha finalizado. Se pone a true al llamar a terminar().
    • listaPuntuacionPorJugador

      ArrayList<PuntuacionJugador> listaPuntuacionPorJugador
      Lista de puntuaciones de cada jugador participante en la partida actual.
  • Constructor Details

    • Juego

      public Juego(String nombreJuego, String descripcion, boolean juegoFinalizado)
      Constructor de la clase Juego.
      Parameters:
      nombreJuego - Nombre del juego.
      descripcion - Descripción breve del juego.
      juegoFinalizado - Estado inicial del juego (siempre se inicializa a false).
  • Method Details

    • inicializar

      public abstract void inicializar()
      Inicializa el estado del juego antes de empezar una partida. Cada subclase define qué significa inicializar: cargar preguntas, limpiar el tablero, resetear contadores, etc.
    • getEstadoTexto

      public abstract String getEstadoTexto()
      Devuelve una representación en texto del estado actual del juego. La vista utiliza este método para mostrar la información al jugador sin conocer los detalles internos de cada juego.
      Returns:
      String con el estado actual del juego.
    • serializarEstado

      public abstract String serializarEstado()
      Serializa el estado actual del juego en un String para guardarlo en disco cuando la partida se pausa. Cada subclase define su propio formato.
      Returns:
      String con el estado serializado.
    • deserializarEstado

      public abstract void deserializarEstado(String estado)
      Reconstruye el estado del juego a partir del String guardado en disco. Es el proceso inverso a serializarEstado().
      Parameters:
      estado - String con el estado serializado previamente.
    • terminar

      public abstract void terminar()
      Marca el juego como finalizado. Cada subclase puede añadir lógica adicional (calcular ganador, registrar resultado, etc.) antes o después de poner juegoFinalizado a true.
    • sumarPuntos

      public void sumarPuntos(String username, int n)
      Suma n puntos al jugador con el username indicado. Si el jugador no tiene aún entrada en la lista de puntuaciones, se crea una nueva para él automáticamente.
      Parameters:
      username - Username del jugador al que sumar puntos.
      n - Cantidad de puntos a sumar.
    • getPuntuacion

      public int getPuntuacion(String username)
      Devuelve la puntuación actual del jugador con el username indicado. Si el jugador no tiene entrada en la lista, devuelve 0 por lo mismo que está obligado a devolver un int.
      Parameters:
      username - Username del jugador a consultar.
      Returns:
      Puntuación del jugador, o 0 si no existe en la lista.
    • getPuntuaciones

      public ArrayList<PuntuacionJugador> getPuntuaciones()
      Devuelve la lista completa de puntuaciones de todos los jugadores. Utilizado por Partida al finalizar para registrar los resultados.
      Returns:
      ArrayList con todas las PuntuacionJugador de la partida.
    • isTerminado

      public boolean isTerminado()
      Indica si el juego ha finalizado. La vista lo consulta después de cada turno para saber si debe cerrar la ventana de juego.
      Returns:
      true si el juego ha terminado, false si sigue en curso.
    • getNombre

      public String getNombre()
      Devuelve el nombre del juego.
      Returns:
      Nombre del juego.
    • getDescripcion

      public String getDescripcion()
      Devuelve la descripción del juego.
      Returns:
      Descripción del juego.