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:

ahorcado01 bf48a

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).

ahorcado02b cb69f

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:

ahorcado03 bc1b5

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:

ahorcado04 29a8f

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.

ahorcado05 c5e17

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).

ahorcado06 1ce4b

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)

ahorcado07 73c85

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.

ahorcado08 97f3d

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.

ahorcado21 06fd2

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:

ahorcado22 ed784

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:

ahorcado10 8a805

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.

ahorcado11 8e544

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.

ahorcado12 46347

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.

ahorcado13b 46827

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.

ahorcado14 8399a

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.

ahorcado15b d0ff8

A ese trozo se le unirá la letra localizada.

ahorcado16 7d66d

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):

ahorcado17b 3c169

El resultado de toda esa operación se volcará de nuevo en la variable cadenaAdivinada quedando el guión sustituito por la letra encontrada.

ahorcado18b fbfa8

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.

ahorcado19 c935c

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:

ahorcado20d 60972

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.

Screenshot 20171001 204102 365aa

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.