Class PasaPalabra

java.lang.Object
Modelo.Juego
Modelo.PasaPalabra

public class PasaPalabra extends Juego
Implementación del juego PasaPalabra. Extiende la clase abstracta Juego y adapta la lógica original de consola para integrarse con la arquitectura de capas del proyecto.
Version:
2.1
Author:
Adrián
  • Field Details

    • ESTADO_PENDIENTE

      public static final String ESTADO_PENDIENTE
      See Also:
    • ESTADO_CORRECTA

      public static final String ESTADO_CORRECTA
      See Also:
    • ESTADO_INCORRECTA

      public static final String ESTADO_INCORRECTA
      See Also:
    • ESTADO_PASAPALABRA

      public static final String ESTADO_PASAPALABRA
      See Also:
    • DIR_ROSCOS

      private static final String DIR_ROSCOS
      See Also:
    • rosco

      private String[][] rosco
      rosco[i][0] = letra rosco[i][1] = definición rosco[i][2] = respuesta correcta rosco[i][3] = estado (PENDIENTE / CORRECTA / INCORRECTA / PASAPALABRA)
    • letraActual

      private int letraActual
    • nivel

      private int nivel
    • aciertos

      private int aciertos
    • fallos

      private int fallos
    • pasapalabras

      private int pasapalabras
  • Constructor Details

    • PasaPalabra

      public PasaPalabra(int nivel)
      Crea una nueva partida de PasaPalabra con el nivel de dificultad indicado.
      Parameters:
      nivel - nivel de dificultad: 0=Infantil, 1=Fácil, 2=Medio, 3=Avanzado
    • PasaPalabra

      public PasaPalabra()
      Crea una nueva partida de PasaPalabra con dificultad Fácil (nivel 1).
  • Method Details

    • inicializar

      public void inicializar()
      Description copied from class: Juego
      Inicializa el estado del juego antes de empezar una partida. Cada subclase define qué significa inicializar: cargar preguntas, limpiar el tablero, resetear contadores, etc.
      Specified by:
      inicializar in class Juego
    • getEstadoTexto

      public String getEstadoTexto()
      Description copied from class: Juego
      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.
      Specified by:
      getEstadoTexto in class Juego
      Returns:
      String con el estado actual del juego.
    • serializarEstado

      public String serializarEstado()
      Formato: letraActual,aciertos,fallos,pasapalabras,estado0,...,estado26
      Specified by:
      serializarEstado in class Juego
      Returns:
      String con el estado serializado.
    • deserializarEstado

      public void deserializarEstado(String estado)
      Description copied from class: Juego
      Reconstruye el estado del juego a partir del String guardado en disco. Es el proceso inverso a serializarEstado().
      Specified by:
      deserializarEstado in class Juego
      Parameters:
      estado - String con el estado serializado previamente.
    • terminar

      public void terminar()
      Description copied from class: Juego
      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.
      Specified by:
      terminar in class Juego
    • procesarRespuesta

      public boolean procesarRespuesta(String respuesta)
      Procesa la respuesta del usuario para la letra actual.
      Returns:
      true si es correcta, false si es incorrecta
    • pasarPalabra

      public void pasarPalabra()
      Marca la letra actual como pasapalabra y avanza a la siguiente letra pendiente. No hace nada si el juego ya ha terminado o el rosco no está cargado.
    • getAciertos

      public int getAciertos()
      Returns:
      número de letras acertadas hasta el momento
    • getFallos

      public int getFallos()
      Returns:
      número de letras acertadas hasta el momento
    • getPasaPalabras

      public int getPasaPalabras()
      Returns:
      número de letras marcadas como pasapalabra hasta el momento
    • getLetraActual

      public int getLetraActual()
      Returns:
      índice de la letra que se está respondiendo actualmente
    • getNivel

      public int getNivel()
      Returns:
      nivel de dificultad del rosco (0=Infantil, 1=Fácil, 2=Medio, 3=Avanzado)
    • getDatosLetra

      public String[] getDatosLetra(int indice)
      Devuelve los datos de una letra del rosco por su índice.
      Parameters:
      indice - posición en el rosco (0-26)
      Returns:
      array [letra, definición, respuesta, estado], o null si el índice es inválido
    • contarPendientes

      public int contarPendientes()
      Cuenta cuántas letras quedan por resolver (pendientes o marcadas como pasapalabra).
      Returns:
      número de letras sin respuesta definitiva
    • getTotalLetras

      public int getTotalLetras()
      Devuelve el número total de letras del rosco.
      Returns:
      total de letras (normalmente 27)
    • avanzarAProximaPendiente

      private void avanzarAProximaPendiente()
    • comprobarFinDeJuego

      private void comprobarFinDeJuego()
    • obtenerUsernameJugador

      private String obtenerUsernameJugador()
    • limpiarTexto

      public static String limpiarTexto(String texto)
      Normaliza un texto eliminando tildes y convirtiendo a minúsculas. Se usa para comparar respuestas sin distinguir acentos ni mayúsculas.
      Parameters:
      texto - texto a normalizar; si es null devuelve cadena vacía
      Returns:
      texto normalizado en minúsculas y sin tildes
    • resolverRuta

      private static File resolverRuta(String nombreFichero)
    • cargarDatos

      private static String[][] cargarDatos(int nivel)