Fecha | Versión | Descripción |
---|---|---|
12/05/2022 | 1.0.0 | Versión inicial Wordle |
Un vez ya estamos familiarizados con el diseño de aplicaciones con Scene Builder (vistas), sabemos hacer uso de un controlador y utilizamos modelos de datos, vamos a desarrollar el juego que causa furor desde finales de 2021.
El objetivo final es desarrollar este juego:
Como podemos observar en 3 intentos hemos resuelto la palabra del día y el botón de validar se ha quedado deshabilitado.
Para la vista vamos a utilizar los siguientes componentes:
Como se puede observar dispondremos de un contenedor Pane que contendrá un GridPane, un TextField, un Button y una label.
Pane:
Properties:
Layout:
Dentro del GridPane si nos fijamos tiene un total de 5 columnas y seis filas, lo que se corresponde con la posibilidad de tener 6 palabras (6 filas) de 5 letras cada una (columnas). Este contendrá en cada una de las celdas un TextField.
Como se puede apreciar, el fx:id de cada uno de estos se utiliza una nomenclatura que permita luego desde el controlador poder referenciar estos y saber que carácter contiene.
La forma más sencilla para evitar repetir código es ubicar un primer TextField en la primera celda y configurar este con las características que nos interesan y una vez hecho esto, lo que realizamos es un copiar y pegar en el resto de celdas de este TextField.
Las características de los TextField de cada una de las celdas son las siguientes:
TextField (Gridpane)
Properties:
Layout:
Tenemos una label, a la que le he llamado yo LabelChivato, que nos va a mostrar la palabra que debemos encontrar, es una ayuda para que podamos probar el funcionamiento de nuestro juego. Esta misma se va a utilizar para luego mostrar los mensajes de aciertos o errores.
Label (LabelChivato)
Properties:
Layout:
Code:
En este apartado veremos los 2 últimos elementos que necesitamos
TextField (TextFieldPalabra) En este vamos a introducir la palabra a validar.
Properties:
Layout:
Code:
Button (btnValidar) Es quien se va a encargar de llevar a cabo parte de la lógica de la aplicación.
Properties:
Code:
Con todo ello ya tendremos nuestro diseño y deberemos pasar al controlador.
Para ello vamos a necesitar que en el proceso de carga obtener la palabra del día. Para ello seleccionaremos aleatoriamente una palabra de entre las 800 de las que disponemos en la base de datos.
Esto implica que deberemos implementar el patrón Singleton para acceder a nuestro MySQL (En los recursos de la unidad tenéis el fichero de base de datos para cargarlo).
Una vez tenemos cargada la palabra, nos la podemos mostrar en la etiqueta chivato para afinar nuestro juego.
A tener en cuenta por cada validación de palabra:
Los colores a utilizar son los siguientes:
¿Cómo cambiamos el color de fondo de un TextField?
TextFieldP11.setStyle("-fx-control-inner-background: #179848");
De esta forma le podemos cambiar el color de fondo a un TextField.
Recomendación.
Haz un método que realice lo siguiente, reciba 2 parametros: uno de ellos será la palabra del día y el otro será la palabra aleatoria.
Este devolverá un array de colores con los colores a utilizar por esa palabra.
Por ejemplo:
xxxxxxxxxx
private static String[] generaArrayColores(String palabra, String palabra_aleatoria)
Te va a ser necesario para realizar el cambio de colores de los fondos de los TextField.
Una vez has acertado la palabra, bloquearás el botón para que no se pueda pulsar. Se puede realizar con el método de los button llamado setDisable(true).
Muestra en la label si ha acertado y el número de intentos o de lo contrario no ha conseguido adivinarla.