Introducción
Crearemos un programa que adivinará el número que el usuario piense en un número máximo de intentos. La dinámica será la siguiente:
- El usuario piensa un número.
- El programa intenta adivinarlo.
- El usuario indica si el número que el programa a dicho es mayor, menor o ha acertado.
- Vuelta al punto 2.
Deberías saber
- Manejo de variables en Scratch.
- Utilización de mensajes.
Objetivos
- Aprender a crear un algoritmo matemático.
- Crear bucles a través de mensajes.
El algoritmo:
Para adivinar un número que el usuario ha pensado hay diferentes formas. Pongamos, por ejemplo, que el número que queremos adivinar está entre 0 y 50. Existen muchas formas de intentar adivinarlo, aquí algunas:
- El programa va diciendo un número al azar entre 0 y 50 hasta que lo adivine. En este caso nos da igual que el usuario nos diga mayor o menor, el programa va a su bola. Este programa podría acertar a la primera, pero también podría tardar muchísimo en dar con el número.
- El programa empieza con el número más pequeño, el 0 en este caso, y va aumentando en uno su «apuesta». Como hay 51 números, en el peor de los casos acertaría en 51 intentos.
- El programa utiliza la información que el usuario le otorga para ir descartando posibilidades. Si el programa dice 25 y el usuario dice que es menor, el programa sabrá que desde el 25 hasta el 50 no estará el número del usuario. Esta será la técnica que utilicemos.
- Preguntaremos el número que se encuentra en la mitad entre el mínimo y el máximo.
- Actualizaremos mínimo o máximo en función de lo que nos indique el usuario.
- Si nos dice que es menor: El máximo será el número que hemos indicado menos uno.
- Si nos dice que es mayor: El mínimo será el número que hemos indicado más uno.
Es muy importante entender el algoritmo que vamos a seguir. Al final es ir quitando ramas a un árbol binario como el que se muestra a la derecha. El de la izquierda sería otra opción pero necesitaríamos más intentos habitualmente. Hacia la derecha es que el número es mayor y hacia la izquierda es que es menor.
El comienzo:
Crearemos 4 variables.
- Número: Será el número que el programa cree que puede ser del usuario.
- Mínimo: El número mínimo que puede pensar el usuario.
- Máximo: El mayor número para adivinar.
- Contador: Contará los intentos que utiliza el programa para adivinar un número.
Preguntar un número
Como habréis observado para hacer la pregunta mando un mensaje. Como hemos comentado en la parte del algoritmo, la idea es preguntar el número que se encuentra entre el mínimo y el máximo para optimizar los resultados.
Esperando la respuesta del usuario
El usuario tendrá que indicar si el número es mayor, menor o si ya hemos acertado. Para ello hay muchas formas, la más fácil para mi es crear 3 objetos. Al hacer clic en cada uno de ellos enviamos un mensaje indicando si es mayor, menos o igual.
El programa en cada uno de los botones será como el que os enseño a continuación, solo hay que cambiar el nombre del mensaje.
Procesando la respuesta
Ahora estaría bien recordar el algoritmo que vamos a utilizar. Si el número que hemos propuesto es el 5, por ejemplo, y recibimos del usuario que es mayor el mínimo número posible pasará a ser el que hayamos dicho más uno. Una vez cambiado esto, volveríamos a preguntar.
También podríamos utilizar la instrucción Cambiar por para sumar o restar a una variable.
En el caso de recibir Menos deberíamos restar al máximo uno.
Acabando
El programa ya está prácticamente finalizado. Solo necesitaremos añadir la función para cuando el usuario haga clic en Igual.
Con esto debería estar todo. Ahora es momento de ver si funciona.
Puedes permitir al usuario que ingrese el el número máximo con el que quiere jugar.
El programa podría calcular al principio el número máximo de intentos que necesitará para acertar el número.
No olvides compartir con nosotros tus creaciones. También puedes encontrar más bananas siguiéndonos en BananaCoders en la comunidad de Scratch o en nuestro Twitter @BananaCoders.