Class tresenraya

java.lang.Object
Modelo.Juego
modelo.tresenraya

public class tresenraya extends Juego
Implementación del juego Tres en Raya para dos jugadores.

Hereda de Juego e implementa todos sus métodos abstractos. El tablero es 3x3 con fichas 'X' y 'O'. La gestión del turno la lleva

invalid reference
Partida
externamente — esta clase solo conoce el estado del tablero.

Version:
2.1
Author:
Nacho
  • Field Details

    • tablero

      private char[][] tablero
      Tablero 3x3. Cada celda contiene 'X', 'O' o ' ' si está vacía.
    • ganador

      private String ganador
      Username del ganador. null si la partida no ha terminado o acabó en empate.
  • Constructor Details

    • tresenraya

      public tresenraya()
      Crea una nueva instancia de Tres en Raya. Llamar a inicializar() antes de empezar a jugar.
  • Method Details

    • inicializar

      public void inicializar()
      Inicializa o reinicia la partida. Limpia el tablero, resetea el ganador y marca el juego como no finalizado.
      Specified by:
      inicializar in class Juego
    • getEstadoTexto

      public String getEstadoTexto()
      Devuelve el estado actual del tablero en formato texto.

      Usa ' . ' para casillas vacías, X para jugador 1 y O para jugador 2. Si la partida ha terminado indica el resultado.

      Specified by:
      getEstadoTexto in class Juego
      Returns:
      String con el tablero dibujado y el estado de la partida
    • serializarEstado

      public String serializarEstado()
      Serializa el estado completo a un String.

      Formato: casilla00,casilla01,...,casilla22;ganador
      Las casillas vacías se guardan como espacio ' '. Si no hay ganador se guarda "null".

      Specified by:
      serializarEstado in class Juego
      Returns:
      String con el estado serializado
    • deserializarEstado

      public void deserializarEstado(String s)
      Restaura el estado desde un String serializado.

      El String debe tener el formato de serializarEstado().

      Specified by:
      deserializarEstado in class Juego
      Parameters:
      s - String con el estado serializado
    • terminar

      public void terminar()
      Marca la partida como finalizada delegando en la clase padre.
      Specified by:
      terminar in class Juego
    • jugarTurno

      public boolean jugarTurno(String username, char ficha, int fila, int columna)
      Realiza una jugada en la posición indicada.

      Coloca la ficha del jugador en (fila, columna). Comprueba victoria o empate. El cambio de turno lo gestiona

      invalid reference
      Partida
      externamente — esta clase no lo maneja.

      Parameters:
      username - username del jugador que realiza la jugada
      ficha - ficha del jugador ('X' o 'O')
      fila - fila donde colocar la ficha (0-2)
      columna - columna donde colocar la ficha (0-2)
      Returns:
      true si la jugada fue válida; false si la casilla estaba ocupada o el juego ya había terminado
    • casillaOcupada

      private boolean casillaOcupada(int fila, int columna)
      Comprueba si una casilla ya tiene una ficha.
      Parameters:
      fila - fila de la casilla (0-2)
      columna - columna de la casilla (0-2)
      Returns:
      true si la casilla está ocupada
    • hayVictoria

      private boolean hayVictoria(char ficha)
      Comprueba si la ficha dada tiene tres en línea.

      Revisa las tres filas, tres columnas, diagonal principal (↘) y diagonal secundaria (↙).

      Parameters:
      ficha - ficha a comprobar ('X' o 'O')
      Returns:
      true si hay tres en línea
    • tableroLleno

      private boolean tableroLleno()
      Comprueba si el tablero está completamente lleno.
      Returns:
      true si no quedan casillas vacías
    • getGanador

      public String getGanador()
      Returns:
      username del ganador, o null si no hay ganador todavía
    • getTablero

      public char[][] getTablero()
      Devuelve una copia del tablero para evitar modificaciones externas.
      Returns:
      matriz 3x3 con el estado actual del tablero