Descripción
Problema Identificado
Los métodos newGame() y restartGame() contienen secuencias idénticas de reinicio de la interfaz gráfica y temporizadores, generando duplicación de código (Duplicate Code).
Solución Aplicada
Se aplicó la refactorización Substitute Algorithm. En lugar de duplicar las llamadas a la GUI en newGame(), el método crea el nuevo tablero y delega el flujo de reinicio directamente a restartGame().
Criterios de Aceptación
[x] Eliminada la duplicación de código en la reinicialización de la interfaz.
[x] newGame() prepara el estado inicial y reutiliza el algoritmo de restartGame().
[x] La interfaz gráfica y el temporizador se reinician correctamente al iniciar o reiniciar una partida.

Descripción
Problema Identificado
Los métodos newGame() y restartGame() contienen secuencias idénticas de reinicio de la interfaz gráfica y temporizadores, generando duplicación de código (Duplicate Code).
Solución Aplicada
Se aplicó la refactorización Substitute Algorithm. En lugar de duplicar las llamadas a la GUI en newGame(), el método crea el nuevo tablero y delega el flujo de reinicio directamente a restartGame().
Criterios de Aceptación
[x] Eliminada la duplicación de código en la reinicialización de la interfaz.
[x] newGame() prepara el estado inicial y reutiliza el algoritmo de restartGame().
[x] La interfaz gráfica y el temporizador se reinician correctamente al iniciar o reiniciar una partida.