En este artículo vas a poder conocer cómo se puede desarrollar la aplicación del típico juego del ahorcado, de una manera sencilla, para que puedas utilizarlo para avanzar en el aprendizaje de nociones básicas de programación con App Inventor. Por ello, la aplicación se creará para que deba ser jugada por 2 jugadores, donde uno de ellos introducirá la palabra secreta que deberá adivinar el otro jugador.
A continuación se explicarán los pasos a seguir para empezar el desarrollo básico de la aplicación, que luego deberás completar por tu cuenta para obtener un funcionamiento completo y con un diseño que permita un uso agradabe de la aplicación.
Comienza añadiendo los siguientes elementos al diseño de la pantalla:
El primer campo de texto se utilizará para que el primer jugador introduzca la palabra secreta, y el segundo campo de texto lo utilizará el segundo jugador para introducir la letra sobre la que se informará si es parte de la palabra secreta o no. En la última etiqueta que se muestra en la parte inferior se mostrará la parte de la palabra secreta que se ha adivinado hasta el momento.
Cambia los nombres de los elementos que se han añadido al diseño de la pantalla, así como los textos que se muestran (la última etiqueta se dejará vacía inicialmente).
Botón Jugar
Guardar la palabra secreta
La palabra secreta que introduzca el primer jugador en el campo de texto superior, se debe almacenar en una variable. El contenido de dicha variable será utilizado posteriormente para la comprobación de la coincidencia de las sucesivas letras que vaya introduciendo posteriormente el segundo jugador. Crea la variable cadenaSecreta, inicialmente vacía:
Cuando el usuario haga clic en el botón Jugar, se recogerá el texto que se haya introducido en el campo de texto TextBoxPalabraSecreta y se debe almacenar en la variable cadenaSecreta. El siguiente código realizará esa operación:
Inicializar la cadena adivinada
Debes declarar otra variable más donde se almacenará la secuencia de letras que se vayan acertando. Esta variable se creará incialmente vacía. Asígnale el nombre cadenaAdivinada.
Cuando se comience la partida al pulsar el botón Jugar, a la variable cadenaAdivinada se le deben asignar tantos guiones (o cualquier otro símbolo) como cantidad de letras tenga la palabra secreta. Esto se hará para que el jugador que deba adivinar la palabra conozca inicialmente cuántas letras tiene la palabra secreta. Según se vayan adivinando letras, los guiones se irán reemplazando por esas letras en sus lugares correspondientes.
El número de letras que tenga la palabra secreta se puede conocer con el bloque lenght (longitud).
Utiliza un bloque for each para hacer un bucle que se repita tantas veces como letras tenga la palabra secreta (usando el bloque length anterior)
En cada vuelta del bucle se añadirá un guión a la cadenaAdivinada. Esto puede hacerse asignando (set) a la variable cadenaAdivinada el contenido (get) que tuviera previamente, junto (join) con un guión.
Mostrar los guiones iniciales
Para que el segundo jugador pueda conocer el número de letras que componen la palabra secreta, se mostrará en la última etiqueta (labelAdivinado) el contenido de la variable cadenaAdivinada, que inicialmente contiene tantos guiones como letras tiene la palabra secreta.
Código completo del botón Jugar
Uniéndolo todo, el código que debe ejecutarse cuando se pulse el botón Jugar debe quedar como el siguiente:
Botón Comprobar
Buscar letra en la palabra secreta
Necesitarás 2 nuevas variables, una que permita almacenar la letra que ha introducido el segundo jugador (letraBuscar) y otra donde se pueda ir almacenando sucesivamente cada una de las letras de la palabra secreta (letraActual), con el fin de comparar cada una de ellas con la letra que se busca. Ambas variables se inicializarán vacías:
El código correspondiente al botón Comprobar debe recoger la letra que haya introducido el segundo jugador en el segundo campo de texto (TextBoxLetra) de la pantalla y guardarla en la variable letraBuscar que se acaba de crear para ello.
Esa letra a buscar se debe comparar con cada una de las letras (letraActual) que forman la palabra secreta. Por tanto, se necesita algún mecanismo que permita obtener una determinada letra de la palabra secreta conociendo la posición que ocupe. Esto puede realizarse con el bloque segment, que permite obtener una parte del contenido de un texto. Al bloque segment se le deben indicar 3 parámetros:
- text: El texto del que se extraerá una parte.
- start: La posición inicial a partir de la que se empezará a extraer la parte del texto.
- length: El número de caracteres a extraer.
En este caso, el texto (text) será la palabra secreta, la longitud (length) será 1 ya que se quiere ir obteniendo sólo una letra cada vez, y la posición inicial (start) es la que debe ir cambiando para que se vaya obteniendo cada letra de la palabra secreta partiendo desde la primera hasta la última.
Por tanto, el parámetro start deberá ir tomando los valores desde 1 hasta el tamaño que tenga la palabra secreta. Esto se puede conseguir con un bucle for each como el siguiente al que se le asigna el nombre i a la variable del bucle, que tomará los valores desde 1 hasta la longitud de la palabra secreta, de 1 en 1. Esa variable i será la posición de inicio para el bloque segment.
A continuación habrá que comprobar si la letra introducida por el jugador (letraBuscar) coincide con alguna de las letras (letraActual) de la palabra secreta.
En caso de que se produzca esa coincidencia, se reemplazará el guión de cadenaAdivinada que se encuentre en la posición que se está comprobando, colocando en su lugar la letra que se ha localizado. Para realizar esta operación se extraerá en primer lugar el trozo de cadena que exista desde el inicio de la cadenaAdivinada hasta la posición anterior a la que se esté comprobando.
A ese trozo se le unirá la letra localizada.
Y a continuación se añadirá el resta de cadenaAdivinada hasta su final, extrayendo la subcadena que hay a partir del carácter siguiente a la letra encontrada, con una longitud igual al número de caracteres que hay desde esa posición hasta el final (longitud - posición actual):
El resultado de toda esa operación se volcará de nuevo en la variable cadenaAdivinada quedando el guión sustituito por la letra encontrada.
La última operación a realizar dentro del botón Comprobar debe ser actualizar el contenido de la etiqueta LabelEliminado para mostrar el estado actual de cadenaAdivinada.
Código completo del botón Comprobar
El código completo que debe ser ejecutado cuando se pulse el botón Comprobar debe quedar finalmente con el siguiente:
Prueba de funcionamiento
Así se muestra la aplicación al ser ejecutada, después de haber introducido el texto prueba como palabra secreta y las letras e, a y p para comprobar su existencia.
Completar la aplicación
Si pruebas la aplicación en su estado actual comprobarás que no tiene mucho sentido el juego ya que en todo momento se está mostrando la palabra secreta. Así que deberás introducir una serie de mejoras para que la aplicación quede completa:
- Rediseñar la estructura de los elementos de la pantalla mejorando su estética, y organizar los elementos en 2 bloques con algún tipo de Arrangement. Inicialmente sólo se debe mostrar la parte correspondiente al primer jugador para que introduzca la palabra secreta. Una vez introducida se ocultará toda esa parte y se mostrará el bloque que usará el segundo jugador, donde debe ir introduciendo la letra a comprobar y el resultado de cada intento.
- Contabilizar el número de fallos.
- Finalizar la partida si se supera un determinado número de fallos o si se ha adivinado la palabra, ofreciendo al usuario la posibilidad de iniciar una nueva partida.
- Mostrar los errores con imágenes típicas del juego del ahorcado.
- Avisar que sólo se puede introducir una única letra en el campo de texto de búsqueda, impidiendo la comprobación si se introduce más de una letra.
- Controlar la introducción de letras mayúsculas o minúsculas.
- Impedir el uso de espacios, acentos, números o caracteres especiales.
- Mostrar la secuencia de letras incorrectas para evitar su repetición.