En este nuevo post te traigo un tutorial de Scratch sobre cómo programar un juego de adivinar un número al azar.

Se tratará de un juego muy básico, fácil de programar y con una interacción básica. Esto permitirá explicar algunos conceptos básicos de Scratch como bucles, sentencias condicionales, disfraces y entrada de datos. El juego es para un solo jugador y consiste en adivinar los números al azar que genera la computadora.

Sigue leyendo y veamos cómo construir este juego paso a paso.

El juego que vamos a crear

En primer lugar, me gustaría que puedas ver el juego que vamos a crear. Puedes acceder a este juego en la plataforma de Scratch. Decidí llamarlo Adivinador de Números, para ser bien descriptivo. Espero que tú encuentres un nombre más atractivo para este juego que vamos a programar.

Accede al juego terminado haciendo clic aquí.

Las reglas del juego son simples. Vamos a utilizar un personaje de la librería de Scratch y este nos va a pedir que adivinemos un número del 1 al 30. Tendremos 5 oportunidades para responder. Si acertamos el número en alguno de los 5 intentos, ganamos y si no, perdemos.

Fácil, ¿no crees?

Comenzando el proyecto

Accede a Scratch online y selecciona la opción Crear.

Lo siguiente que tenemos que hacer es eliminar al gato que está en el escenario por defecto. Debajo de este mismo escenario aparecen los diferentes objetos, selecciona el ícono de basurero para eliminarlo o haz clic derecho sobre el gato y selecciona eliminar.

De esta forma, tendremos el escenario completamente en blanco, listo para crear.

Selección de un fondo

Lo siguiente que vamos a hacer es crear un escenario. Para ello, hay que acceder a la esquina inferior derecha y seleccionar la opción de Elegir un Fondo.

tutorial de scratch elegir un fondo

Al abrir esta opción te aparecerán muchos fondos. Elige el que más te guste. Yo elegí Theater 2, que es el fondo de un teatro.

fondos disponibles para elegir

Selección de un personaje

Si bien el personaje no es tan importante para el juego, aquí sí me gustaría que elijas el mismo que yo, ya que después, te voy a enseñar cómo cambiar los diferentes disfraces que tienen los objetos en Scratch.

En la esquina inferior derecha, selecciona la opción Elegir un Objeto.

elegir objeto en scratch

De todos los personajes que aparecen, elige Witch.

personaje witch en scratch

Una vez que lo elijas, aparecerá en el escenario del juego. Aquí puedes ubicar al personaje en el lugar que prefieras para que combine con el escenario que has elegido.

Te recomiendo que ajustes la escala del personaje con la opción Tamaño. Yo, por ejemplo, lo definí en 70, ya que el personaje era demasiado grande para el fondo que elegí. Prueba con diferentes valores hasta que quede de un tamaño adecuado.

cambiar tamaño del personaje en Scratch

Preparación del juego

Ya tenemos todos los elementos necesarios para comenzar a programar el juego. Lo primero que vamos a pensar es qué variables necesitamos y cuál será la estructura general del programa.

La estructura general del programa

Pensemos un poco lo que necesitamos hacer.

El personaje que añadimos al escenario primero tiene que explicar el juego, contándonos que tenemos que adivinar un número al azar y que tenemos 5 intentos. Luego, debe pedirnos que ingresemos un número.

  • Si acertamos, debe informarnos de eso y salir del programa.
  • Si no acertamos, debe repetirse el ciclo de intentos hasta que los agotemos. Al agotarse los intentos, el personaje debe decirnos que hemos perdido.

¿Qué variables son necesarias?

Una variable es un espacio de memoria donde podemos almacenar información. En este caso, ¿qué necesitamos almacenar?

En primer lugar, tenemos que generar un número al azar y almacenarlo. Así que allí ya tenemos una variable asegurada.

En segundo lugar, tenemos que contar los números de intentos. Por lo tanto, tenemos allí otra variable.

Por último, el jugador intentará arriesgar una respuesta, así que ese valor tiene que ser almacenado.

Creando las variables

Vamos a crear estas tres variables: numeroAzar, intentos y numeroElegido.

Notarás que no uso tildes en los nombres de las variables. Esto es adrede, ya que en programación se suele evitar usar palabras acentuadas y caracteres especiales.

Para crear una variable accede a la opción Variables en la solapa Código. Luego, selecciona Crear una variable.

tutorial de scratch creación de variables

Aparecerá una ventana donde deberás escribir el nombre de la variable.

nueva variable tutorial de scratch

Completa el nombre y deja el resto de los campos como están. Finalmente, haz clic en De acuerdo.

Repite el proceso para crear las tres variables necesarias. Ponles el siguiente nombre a cada una: numeroAzar, intentos y numeroElegido.

Al final, la sección de variables tiene que verse así.

sección variables

El programa

Es hora de comenzar a crear nuestro programa. Para ello, utilicemos la instrucción para comenzar el programa.

comenzar programa

Lo siguiente que me gustaría hacer es definir los valores iniciales de las variables.

Valores iniciales de las variables

Tenemos tres variables: numeroAzar, intentos, y numeroElegido. La primera variable almacena un número al azar. La segunda, lleva la cuenta de la cantidad de intentos que el usuario hará para adivinar el número. Y la tercera, almacena la respuesta del usuario. Esta última, entonces, recibirá un valor a mitad del programa, así que, en principio, no es necesario inicializarla.

En Operadores, seleccionemos el bloque para generar números al azar y definamos un rango de 1 a 30.

scracth generar número al azar

Ahora, este valor tenemos que asignárselo a la variable numeroAzar. Para ello, seleccionamos Variables y elegimos el bloque de fijar un valor, asegurándonos de seleccionar numeroAzar.

scratch fijar variable

Ahora, solo resta ubicar el bloque de generación de número al azar dentro de la asignación.

scratch fijar número al azar a variable

A continuación, hagamos lo mismo para intentos, pero dejemos el valor en 0.

scratch fijar intentos a cero

Finalmente, juntemos todos los bloques que tenemos hasta el momento.

comienzo del programa con inicialización de variables

Explicar la consigna del juego

A continuación, vamos a hacer que el personaje que tenemos en pantalla explique el juego. Para ello, usaremos el bloque Decir… durante que aparece en la sección de Apariencia.

Al utilizar este bloque, aparece un diálogo de texto donde está ubicado el personaje, como si fuera un cómic. Este diálogo queda a la vista durante la cantidad de segundos que le indiquemos.

Así que, primero, hagamos que nuestro personaje salude.

saludo de personaje

Si lo agregas a continuación del resto del programa, queda así.

programa parcial con saludo

Si corres el programa, seleccionando la bandera, podrás ver el resultado en pantalla.

visualización de juego

Así se ve el saludo del personaje.

personaje saludando

Lo que queremos añadir también es una explicación de cómo es el juego. Así que volvamos a utilizar otro bloque Decir… durante.

explicación del juego

Como ves, en el texto expliqué cuáles son las reglas del juego y en segundos definí 4, ya que, se necesita un poco más de tiempo para leerlo. Puedes volver a correr el programa para ver cómo va quedando.

Si el diálogo queda fuera del área del programa, recuerda que puedes reposicionar al personaje o escalarlo.

Juntemos todo lo que tenemos hasta el momento.

inicio de programa

La estructura principal del programa

Hasta aquí no hemos hecho nada más que presentar el juego. Ahora llega el momento de hacer que todo funcione.

Nuestro personaje va a pedirnos que adivinemos un número y tenemos hasta 5 intentos. Esto significa que necesitamos una estructura que se repita 5 veces o menos. La condición para salir de esta repetición es que nuestra variable intentos llegue a 5 o que numeroElegido sea igual a numeroAzar. Si esto último se da, significa que adivinamos el número.

Utilicemos el bloque Repetir hasta que de la sección Control.

bloque repetir hasta que

Luego, necesitaremos una condición del tipo O. La encontramos en Operadores.

scratch condición o

Tenemos que establecer las dos condiciones que dijimos arriba. La primera es que intentos sea igual que 5. Para ello, usamos un operador de igual y del lado izquierdo le agregamos la variable intentos y del lado derecho, escribimos un 5.

scratch intentos

A continuación, usamos el mismo operador, pero de un lado ponemos numeroElegido y del otro lado, numeroAzar.

numero elegido igual a numero al azar

Ahora, juntemos todo en el bloque O.

condición completa

Finalmente, incluimos este grupo de bloques en el Repetir hasta que.

bucle repetir hasta que completo

Con eso ya tenemos la estructura principal de nuestro programa. Pero sigamos manejando este gran bloque por separado, al menos por el momento. Todavía hay mucho por hacer.

Entrada de datos y actualización de intentos

Lo siguiente que queremos que suceda es que el personaje nos pida ingresar un número. Para ello, Scratch ofrece un bloque especial que se llama Preguntar… y esperar. Este bloque lo encuentras en Sensores. Agrégalo al área de trabajo y escribe en él ¿Qué número estoy pensando?

Lo que hace este bloque es mostrar en pantalla una ventana con una entrada de texto donde el usuario puede escribir.

personaje pregunta y aparece el campo de texto para responder

Como te imaginarás, este bloque es especial, ya que permite interactuar con el programa introduciendo información. Ya haremos una prueba más adelante. Por el momento mantengamos el bloque separado del resto del programa.

El número elegido por el usuario tiene que almacenarse en numeroElegido. Lo que puedes estar preguntándote es cómo hacer para que la entrada de datos del bloque anterior se asigne a esa variable.

La forma de hacer esto es seleccionar una variable especial que tiene Scratch que se llama respuesta y que se encuentra en Sensores. Esta variable toma siempre el valor que se introduce en el campo de texto del bloque Preguntar y… esperar.

Entonces, luego de pedir qué el usuario ingrese un número, asignaremos ese valor introducido a numeroElegido.

asignación de número elegido

Por último, tenemos que incrementar intentos en 1, debido a que ya hemos usado un intento. Para ello, usamos el bloque cambiar, de Variables.

cambiar valor de intentos

Ahora sí, es buen momento de ir juntando todo lo que tenemos en un gran bloque.

programa parcial con bucle repetir hasta que

Condición de acierto y no acierto

Hasta aquí, nuestro personaje presenta el juego y nos pide que adivinemos un número. Nosotros intentamos adivinarlo en 5 intentos, pero nada sucede. No importa si lo adivinamos o no.

Agreguemos una condición para chequear si la respuesta es correcta. Tomemos un bloque Si… entonces, de Control.

bloque si entonces

Lo que deseamos verificar es si numeroElegido es igual a numeroAzar. Así que podemos agregar esa comparación.

comparación de numero elegido con numero azar

El bloque en conjunto nos quedaría de la siguiente manera.

bloque si entonces

Sin embargo, hay algo que no estamos contemplando. ¿Qué queremos que ocurra cuando el jugador acierte el número al azar? Vamos a querer que el personaje no nos vuelva a pedir un número, que nos felicite (¡o se enoje porque le ganamos!) y que el programa termine.

Si incluyéramos ese mensaje de felicitación dentro de un bloque si… entonces en el que comparamos si numeroElegido es igual a numeroAzar, luego el personaje nos volvería a pedir que adivinemos el número, porque seguimos dentro del bucle principal. ¡Pero si ya hemos adivinado el número! ¡Eso no tendría sentido!

La condición para que no nos pida más un número ya está contemplada en el repetir hasta que… Por lo tanto, ese mensaje de felicitaciones debería estar fuera del repetir hasta que…

El bloque si… entonces, no debe chequear igualdad sino desigualdad. Es decir, qué ocurre si numeroElegido y numeroAzar no son iguales. Allí necesitamos que el personaje nos diga que no hemos acertado.

Como Scratch no tiene operador de desigualdad, tenemos que recurrir al bloque no, que se encarga de negar otro bloque de operación.

bloque no

El bloque si… entonces debe quedar así.

bloque si entonces con negación

Ahora, hagamos que, en este caso, nuestro personaje nos informe que fallamos al intentar adivinar el número. Usemos un bloque decir… durante.

el personaje informa que fallamos

Yo opté por que diga «No, no es ese número», durante 2 segundos. Pero tú puedes personalizar el mensaje como quieras.

A continuación, integremos este bloque con lo que ya teníamos.

programa parcial

El final del programa

Lo que nos falta para terminar el programa es la conclusión. Esta irá a continuación del bucle repetir hasta que…

Puede haber dos altenativas:

  1. Adivinar el número en algunos de los 5 intentos o…
  2. No adivinar el número en los 5 intentos

Como hay dos posibilidades, vamos a usar un bloque si… entonces… si no. La condición es si numeroElegido es igual a numeroAzar. Puedes crearla nuevamente o duplicar la que está en el bucle repetir hasta que.

condición final

Lo que resta es informar al usuario si acertó el número o no.

En el cuerpo de la condición si… entonces, vamos a agregar un bloque decir, donde el personaje nos comunique que acertamos. Como quiero que mi personaje sea un poco competitivo, estará enojada porque hemos acertado. Así que dirá algo así como: «¡Has acertado! ¡¿Cómo lo hiciste?!». Tú puedes personalizar ese texto como prefieras. Obviamente, utilizamos un bloque decir… durante.

bloque decir ganamos

En el cuerpo de la condición si no, el personaje nos comunicará que fallamos en nuestros 5 intentos y que, por lo tanto, hemos perdido. De nuevo, mi personaje es un poco burlón así que estará feliz de que nos ganó. Otra vez usamos un bloque decir… durante.

bloque decir perdimos

Sin embargo, eso no es todo. El personaje tiene que decirnos cuál era el número al azar que no pudimos adivinar. Para ello, vamos a usar dos bloques decir… durante. En el segundo de ellos, mostraremos la variable numeroAzar. Toda la estructura queda de la siguiente manera.

revelando el número al azar

Juntemos las dos condiciones con el bloque si… entonces… sino.

condición final completa

Y finalmente, agreguemos este gran bloque al que ya teníamos. Nuestro programa debe verse así.

programa parcial

Probando el juego

A esta altura, ya puedes probar el juego completo. Ten en cuenta que en la sección variables puedes hacer visibles o invisibles las variables. De hacerlas visibles, estas aparecerán en pantalla. De este modo, podrás ver cuál es el número al azar que se genera. Desde ya, esto es solamente para cuando construyes el programa.

visualizar variables
escenario de juego con variables

Cambio de disfraces

El juego ya funciona. Sin embargo, hay algunas mejoras que podemos hacer. Una de ellas es cambiar el disfraz de nuestro personaje.

¿Qué es un disfraz? Es la apariencia que tiene el personaje en el escenario. Un objeto en Scratch puede tener más de un disfraz. Esto permite que se vea diferente, en una pose distinta o con otro humor. Si se aplican en secuencia, los disfraces permiten realizar animaciones.

Puedes ver los disfraces disponibles para el personaje en la pestaña Disfraces. En el margen izquierdo verás que aparecen diferentes disfraces. En el caso del personaje Witch que elegí, hay cuatro diferentes:

  • witch-a es la posción neutral
  • witch-b es la expresión feliz del personaje
  • witch-c es la expresión desafiante
  • witch-d es la expresión enojada
tutorial de scratch disfraces

Scratch tiene un bloque que nos permite cambiar el disfraz de nuestro objeto en el momento que queramos. Me refiero al bloque cambiar disfraz.

bloque cambiar disfraz

La idea es que el personaje comience neutral. Luego, cuando pida la respuesta adopte una postura desafiante. Si fallamos, tiene que reírse y, si acertamos, enfurecerse.

Hay varias formas de hacer esto. Aquí te dejo como opté por hacerlo yo.

programa principal con cambios de disfraces

En el último bloque si… entonces… si no, no me pareció necesario incluir el cambio de disfraz en el si no. Esto es porque el personaje ya se viene riendo al salir del bucle repetir hasta que… De todos modos, sí me pareció adecuado incluir un cambio de disfraz luego de la risa, al momento de informar el número al azar. Tú puedes hacerlo diferente si así lo deseas. Te recomiendo que hagas pruebas e incluyas los cambios de disfraces como más te gusten.

Agregado de sonidos

Para hacer más completo este tutorial de Scratch, vamos a agregar dos sonidos al juego. Uno para cuando ganamos y otro para cuando perdemos. Ve a la solapa Sonidos. Si te aparece un sonido allí, puedes eliminarlo, aunque no es necesario.

Accede a Elige un sonido.

tutorial de scratch elegir un sonido

Selecciona el sonido Win.

scratch sonido win

Repite el proceso para el sonido Lose

scratch sonido lose

La pestaña Sonidos debería verse algo así.

pestaña sonidos en Scratch

A continuación, volvemos a la pestaña Código y allí seleccionamos Sonido. Utilizaremos el bloque tocar sonido… hasta que termine.

scratch tocar sonido

De esta forma, incluimos los dos sonidos en cada uno de los casos. El programa final ahora debería verse así.

programa final con sonidos

Resolviendo un bug

Mientras construía este tutorial, descubrí que el programa tenía un bug, es decir un error o un comportamiento inesperado.

El problema ocurre cuando el juego se ejecuta de forma sucesiva. Scratch retiene el valor de numeroElegido y puede suceder que el último número elegido en un programa que termina sea el mismo valor que el nuevo número al azar en un programa que comienza. Aunque hay baja probabilidad de que esto ocurra, puede suceder. Si sucede, no llegaremos a introducir ningún número porque el programa considerará que ya lo hemos adivinado, saltando directamente al bloque de código en el que ganamos.

Para corregir esto, basta con inicializar la variable numeroElegido al comienzo del programa poniéndolo cualquier valor que no esté entre 1 y 30. Lo ideal es ponerle un 0.

resolución de bug

Programa final

El programa final debería verse así:

programa final tutorial de scratch

Conclusiones

Aquí termina el tutorial de Scratch para crear un juego de adivinar números. Así que me gustaría sacar algunas conclusiones sobre lo que hemos hecho.

Como siempre, lo primero que hay que hacer es definir con claridad qué es lo que tenemos que hacer.

En segundo lugar, en este tutorial de Scratch hemos aprendido a preguntar al jugador para que pueda responder y hacer el juego interactivo. También aprendimos a utilizar disfraces y sonidos.

En tercer lugar, me gustaría destacar la aparición del bug. Esto es algo que ocurre a menudo cuando escribes código de programación. Muchas veces creerás que no puede ser que aparezcan bugs en tu programas. Sin embargo, allí están. Por lo tanto, ten siempre una mente abierta y piensa que puedes equivocarte o puedes no estar contemplando todos los escenarios.

Si tienes alguna duda o has encontrado un error, déjame un comentario al finalizar el artículo.

Nuevo canal de YouTube con tutoriales de Scratch

Después de un tiempo, finalmente me decidí a crear mi propio canal de YouTube donde explico cómo programar con Scratch. Suscríbete siguiendo este enlace y activa la campanita para enterarte cuándo hay un nuevo video. Iré agregando videos de a poco.

Más contenido en Mentes Liberadas

Esto ha sido todo por este artículo. Espero que haya sido de tu agrado.

Te invito a que sigas a Mentes Liberadas en las redes sociales. Estamos en FacebookInstagramPinterest X.

También te puedes suscribir a nuestro newsletter para recibir las novedades del sitio en tu correo electrónico.

Por último, puedes hacer una donación a Mentes Liberadas a través de nuestra cuenta en Ko-Fi. De esta manera, estarás contribuyendo con el sitio, para que haya más contenido, más recursos, más herramientas online.

Gracias por tomarte el tiempo de leerme.

Te espero en el próximo artículo de Mentes Liberadas.

Etiquetado en:

, ,

Acerca del Autor

Alejandro De Luca

Nací en Buenos Aires y soy programador web. Me defino como un rebelde autodidacta y cafeinómano. Vivo comparando la vida real con Los Simpsons. Creé Mentes Liberadas para compartir consejos, recursos y herramientas para la escuela y la universidad. Vivo en Montevideo, Uruguay.

Ver Artículos