EJERCICIO 9 – ¿Qué número está pensando?

EJERCICIO 9 - ¿Qué número está pensando?

Vamos a hacer un programa sencillo pero eficiente. Él pensará un número y nosotros tenemos que adivinarlo.

Para que el dispositivo pueda hacer esto correctamente, tenemos que enseñarle cómo hacerlo, paso a paso, añadiendo bloques de código. Se trata de enseñarle al programa la lógica que seguimos nosotros, los seres humanos, cuando jugamos a este juego.

Definimos la interfaz del juego

Tenemos que crear un interfaz para para que la aplicación se relacione con el usuario, es decir, le pregunte un número, y le vaya dando pistas, diciendo si es demasiado alto, demasiado bajo, o si finalmente ha acertado el número secreto.
Creamos entonces en el Diseñador una etiqueta, y cambiamos el texto para que aparezca en ella la palabra “Número:”.

Uno de los retos más importantes cuando programamos ser ordenados.
Debemos acostumbrarnos a seguir prácticas o métodos que nos libren del problema de perder información de los componentes a largo plazo.

A partir de este proyecto vamos entonces a intentar ser más ordenados. Vamos a dejar una E_ delante del nombre mi nueva etiqueta.
Así siempre sabremos, cuando vea los bloques, que esa es una etiqueta, y no un botón, ni campo de texto, ni otro tipo componente. Llamaremos a la etiqueta E_número.

EJERCICIO 9 - ¿Qué número está pensando?
Además, el dispositivo va a tener que “escuchar” cada número que le digamos, para decidir si hemos acertado, así que añadiremos en nuestra ventana del visor un campo de texto. Servirá para que el jugador indique qué número cree que ha pensado el programa.
EJERCICIO 9 - ¿Qué número está pensando?
Para diferenciarlo de la etiqueta que hemos creado antes, al campo de texto le llamaremos T_número. Así cuando estemos en el editor de bloques podremos diferenciar fácilmente entre la etiqueta y el campo de texto, porque uno comienza con E_ y otro con T_.

Aunque parezca innecesario, esta costumbre en la asignación de nombres puede ser muy interesante. Con el tiempo cada programador va desarrollando sus propios métodos, o tomándolos de otros programadores, para disfrutar del “arte” de programar sin complicarse la vida.

Finalmente tendremos que añadir un botón con el texto “Adivina” para que el dispositivo sepa cuál hemos elegido. A este botón lo llamaremos B_adivinar. Cuando el jugador lo pulse el programa tendrá que hacer algunas comprobaciones que ahora iremos viendo.

EJERCICIO 9 - ¿Qué número está pensando?
Generamos un número aleatorio

Vamos al editor de bloques.

Lo primero que el programa tiene que hacer es pensar en un número. En este caso le vamos a indicar cómo debe pensar en un número entre 1 y 10. Al ser una instrucción matemática, abriremos el cajón Matemáticas, y usaremos el bloque entero aleatorio. Tendremos que especificarle entre qué dos números debe pensar su número.

EJERCICIO 9 - ¿Qué número está pensando?
A continuación, vamos a hacer que el programa guarde este número en su memoria, porque si no lo olvidaría y no podríamos jugar.

Guardamos el número en una variable

Una variable es un espacio de la memoria del dispositivo reservado para guardar datos que nuestros programas tienen que manejar durante su funcionamiento.

Para poder utilizar las variables de memoria es necesario en primer lugar darles un nombre. Para ello abrimos el cajón Variables y elegimos el bloque inicializar global…

Podemos darle a la variable el nombre V_número_pensado. Es importante dar a las variables un nombre descriptivo, porque en programas más complejos, con más variables, nos facilitará saber para qué sirve cada una.

Como venimos haciendo, y para identificar rápidamente que se trata de una variable, el nombre comienza con una V_.

EJERCICIO 9 - ¿Qué número está pensando?

EJERCICIO 9 - ¿Qué número está pensando?

Con estos dos bloques le hemos dicho al el juego que tiene que pensar un número entre uno y diez, y guardárselo en una variable de su memoria, sin mostrárselo al jugador.

IMPORTANTE

Una variable de memoria es como una caja dentro de un gran armario lleno de cajas, que es la memoria total del ordenador. La memoria total del ordenador está compuesta por millones de estas pequeñas cajitas de memoria, que sirven para guardar la información que el ordenador recibe del exterior, y la que él mismo genera durante la ejecución de las aplicaciones.

También se guarda en la memoria el propio programa que está ejecutándose

Para comenzar a jugar deberíamos pedirle al jugador que nos diga un número. Esto lo conseguiremos por medio del campo de texto T_número que hemos creado en el Visor. El jugador irá escribiendo números en este campo y el programa le irá indicando si el número aleatorio generado secretamente es mayor o menor al que el jugador ha escrito.
Por lo tanto, cada vez que el jugador escriba su número y pulse el botón B_adivinar el programa lo comparará con el número secreto.

Hacemos comparaciones con la instrucción si-entonces

Ahora que ya tenemos el número pensado y el número que ha elegido el jugador ¿cuál será el siguiente paso? La aplicación tiene que comparar ambos números, para saber si ha acertado, o si es mayor o menor.

Este bloque tan importante es el que nos permitirá a los programadores enseñarle al dispositivo cómo debe tomar las decisiones durante la ejecución de un programa. El bloque si-entonces bloque sirve para darle inteligencia a las aplicaciones.

Dependiendo del resultado de la comparación la aplicación deberá hacer una cosa u otra:

Si se cumple una condición

Entonces Ejecuta esto

EJERCICIO 9 - ¿Qué número está pensando?

El bloque que sirve para hacer una comparación entre dos números está en el cajón Matemáticas. Lo arrastraremos al editor de bloques, hasta encajarlo con el primero de los huecos del bloque si-entonces

EJERCICIO 9 - ¿Qué número está pensando?
En el primer hueco del bloque azul pondremos el número secreto que almacenamos antes en la variable, y en el otro lado indicaremos cuál es el número que ha escrito el jugador en el campo T_número

Podemos saber cuál es el contenido de una variable con el bloque tomar. Arrastramos al editor el bloque tomar que se encuentra dentro del cajón Variables hasta el primer hueco del bloque azul de comparación, y una vez colocado elegimos qué variable es la que queremos usar, desplegando la lista de variables situada dentro del bloque tomar.

EJERCICIO 9 - ¿Qué número está pensando?
Ahora que ya sabemos cómo consultar cuál es contenido de la variable V_numero_pensado, podemos modificar la comparación haciendo clic en el centro del bloque azul.
Empezaremos evaluando si el número pensado es mayor que el número del jugador.

EJERCICIO 9 - ¿Qué número está pensando?
En caso de que se cumpla la condición deberemos darle al jugador una pista, diciéndole que el número que nos ha dicho es demasiado bajo. Lo haremos creando una nueva etiqueta E_pista en el interfaz del juego.
EJERCICIO 9 - ¿Qué número está pensando?
Bloque poner para guardar el valor de una variable, texto o etiqueta

Igual que con el bloque tomar tomábamos el valor de la variable, con el bloque poner vamos a asignar el valor “Demasiado bajo” al texto de la etiqueta E_pista, para que el jugador lo vea en la pantalla del juego.

IMPORTANTE

Utilizaremos el componente Etiqueta cuando el valor de su propiedad Texto sólo va a ser modificada por el programa, es decir, cuando el usuario de la aplicación no tiene que escribir sobre ella para modificarlo. En caso de que el usuario pudiera modificarlo utilizaríamos un componente CampoDeTexto.

EJERCICIO 9 - ¿Qué número está pensando?
Para incluir el texto “Demasiado bajo” usaremos un bloque fucsia que hay dentro del cajón Texto

EJERCICIO 9 - ¿Qué número está pensando?
¿Cuándo debemos hacer la comparación?

Cada vez que el usuario haga clic en el botónB_adivinar. Por lo tanto, incluiremos todo el bloque anterior dentro del bloque cuando.B_adivinar.Clic

Hacemos tres bloques si-entonces, uno para cuando el número sea menor, otro para cuando sea mayor, y el último para cuando sea igual, en cuyo caso el jugador habrá acertado el número.

Observamos que en cada bloque azul elsigno de comparación será diferente. Podemos duplicar, botón derecho>Duplicar, los bloques si-entonces completos y luego modificar los bloques azules y fucsia para que se adapten a cada comparación.

EJERCICIO 9 - ¿Qué número está pensando?

EJERCICIO 9 - ¿Qué número está pensando?
Cuando estamos probando la aplicación, no sabemos cuál es el contenido de la variable V_número_pensado, así que no tenemos certeza de si el programa está ejecutándose bien, es decir, si está informando correctamente al jugador si el número es demasiado alto, o demasiado bajo.

Para saber si el programa funciona como debe tenemos que poner “chivatos”. Por ejemplo, podemos hacer que se muestre siempre el número pensado en pantalla, para saber si el programa funciona bien.

ATENCIÓN

Un chivato se utiliza sólo durante la fase de desarrollo del programa, mientras se está escribiendo. Cuando todo está probado, y antes de ponerlo a disposición de los usuarios, hay que acordarse de quitar todos los chivatos.

Para poner un chivato podemos definir una etiqueta E_chivato, y luego usar estos bloques:

EJERCICIO 9 - ¿Qué número está pensando?
Ubicamos este bloque es dentro del evento cuando B_adivinar.Clic, como primera instrucción.
Así se actualizará en la pantalla el valor delchivato cada vez que usuario pulse el botón de adivinar.

EJERCICIO 9 - ¿Qué número está pensando?
En nuestro programa, para evitar las ejecuciones de código innecesarias, vamos a utilizar sentencias si-entonces anidadas, o si-entonces-si no. Sólo se ejecutarán los bloques del si no cuando NO se cumpla la condición del si-entonces anterior.

De esta forma el bloque cuando.B_adivinar_Clic se ejecutará mucho más rápido, al evitar pasar por bloques sin necesidad.

EJERCICIO 9 - ¿Qué número está pensando?