rueda de la fortuna en Scratch
Scratch

Programar la rueda de la fortuna en Scratch

En esta nueva entrega para aprender a programar, vamos a programar la rueda de la fortuna en Scratch. La rueda de la fortuna es esa famosa ruleta que aparece en muchos programas de televisión donde un participante gira una rueda y una aguja indica el resultado obtenido.

Es muy común ver este dispositivo en juegos de concursos televisivos. Hay ruedas de la fortuna de distintos formatos. En este caso vamos a programar una rueda clásica de forma vertical.

Para quienes no conozcan Scratch, les recomiendo el primer artículo de Mentes Liberadas donde explicamos de qué se trata: Scratch, programación para chicos.

El programa final de ejemplo

Pueden encontrar en este enlace el programa en Scratch que vamos a hacer. Allí podrán correr la simulación, mirar cómo está hecho el programa, modificarlo y también usarlo para jugar.

Tengan en cuenta que este programa quizás resulte un poco difícil de entender y seguir para chicos chiquitos. Esto es porque involucra algunos conceptos de física. Lo recomiendo para chicos de más de 10 años. Más allá de la edad y la experiencia con esta plataforma, si aún no hicieron el programa del dado virtual en Scratch, les recomiendo que comiencen por ahí primero.

Los gráficos necesarios

Para poder realizar este programa es necesario contar con dos gráficos. Uno lo pueden dibujar en Scratch porque se trata de algo muy simple. El otro lo pueden dibujar también, si tienen ganas y tiempo. Si no, buscar uno en internet o usar el que voy a usar de ejemplo.

La aguja

En primer lugar, vamos a necesitar una aguja que marque la posición final de la rueda. Esto es algo tan simple como dibujar un palito en Scratch. Este gráfico no se moverá en ningún momento. De lo único que se tienen que preocupar es que se vea bien y que esté derecho. Recuerden que en Scratch pueden mantener apretado Shift a la hora de dibujar para que las líneas salgan rectas.

La rueda de la fortuna

En segundo lugar, vamos a necesitar la rueda de la fortuna propiamente. Consiste en un gráfico con secciones radiales que indiquen distintos puntajes, premios o castigos. La pueden dibujar o pueden buscar en internet gráficos de este estilo. Tengan en cuenta que es necesario que estén en formato PNG con transparencia.

Aquí les dejo la que voy a usar en este ejemplo:

programar rueda de la fortuna en scratch

Para esta pieza gráfica lo más importante es determinar donde estará su centro y cómo rotará. Recuerden que Scratch permite tres tipos distintos de rotación.

El centro de la figura tiene que ser el centro geométrico de la rueda.

programar la rueda de la fortuna en scratch centro

El tipo de rotación debe ser el primero de todos los que aparecen.

programar la rueda de la fortuna en scratch tipo de rotación

Los conceptos de física detrás de la rueda de la fortuna

Nuestra rueda de la fortuna, antes de ser “de la fortuna”, es una rueda común y corriente. Esto significa que tiene una estructura circular y que gira sobre un eje.

En nuestro caso, lo que haremos es simular el funcionamiento de una rueda que gira. Para realizar esto necesitamos valernos de la física. Tengan en cuenta que el conocimiento de esta ciencia es fundamental cuando queremos realizar programas que imiten la dinámica del mundo físico.

Velocidad y aceleración

Cuando un cuerpo se mueve, pensemos por ejemplo en un automóvil, este avanza una serie de metros en cuestión de segundos. A la magnitud que mide este avance de distancia recorrida en función del tiempo, la conocemos como velocidad.

Este es un concepto muy familiar para todos. Estamos acostumbrados a hablar de kilómetros por hora cuando nos referimos a movimientos de vehículos o incluso cuando corremos.

Hay otra magnitud que se relaciona con la velocidad y que es muy importante de comprender porque la afecta directamente. Se trata de la aceleración. La aceleración es el cambio de velocidad. Cuando un automovilista pisa el acelerador de su vehículo, está provocando un incremento de la velocidad y cuando pisa el freno, un decremento. Hablamos en ese caso de aceleración y desaceleración.

¿En qué se relaciona esto con la rueda de la fortuna? En que vamos a comenzar el giro de la rueda con una velocidad determinada, y cada vez vamos a querer que la rueda se vaya moviendo más lento. Por lo tanto, vamos a necesitar una desaceleración (o aceleración negativa) que vaya afectando a la velocidad para que esta sea cada vez menor (hasta un límite determinado).

Sin embargo, una persona corriendo, un automóvil o un avión se mueven siempre de forma líneal. Sea hacia adelante o hacia atrás. Pero nuestra rueda de la fortuna no se mueve así. En vez de desplazarse, rota. ¿Cómo podemos manejar entonces su movimiento?

Velocidad angular y aceleración angular

Así como los cuerpos que se desplazan pueden tener velocidad y aceleración, los que giran tienen las equivalentes, velocidad angular y aceleración angular.

En el caso de la velocidad angular, en vez de medir distancia recorrida por unidad de tiempo, vamos a considerar ángulo recorrido por unidad de tiempo. Es decir, el ángulo recorrido en función de tiempo transcurrido.

Por su parte, la aceleración angular es la variación de la velocidad angular en un lapso de tiempo determinado.

Es decir que para poder realizar nuestra rueda de la fortuna podremos usar estos dos conceptos. Cada uno de ellos estará representado por una variable.

El programa de la rueda de la fortuna en Scratch

El objetivo

Ahora sí, sin más preámbulos, nos metemos de lleno en el programa en Scratch. Como siempre les aclaro en este espacio, es muy importante tener bien claro qué es lo que queremos que ocurra. Para este programa vamos a hacer que en cuanto comience, cada vez que el usuario presionbe la barra espaciadora, la rueda gire con una velocidad inicial determinada al azar y se vaya deteniendo de a poco hasta quedar en un lugar determinado.

El programa tiene que quedar siempre esperando a que el usuario presione nuevamente la barra para comenzar a girar la rueda de nuevo.

El control

Lo primero que vamos a armar es la estructura de control que involucra la interacción con el usuario. Nos referimos a cuando el usuario presiona la barra espaciadora y da comienzo al giro. Tenemos que hacer que eso se repita siempre. Al comienzo también podemos aprovehar para hacer ajustes gráficos. Por ejemplo, determinar el tamaño de la rueda, o su posición inicial.

control de la rueda de la fortuna en scratch

Como ven, al presionar el botón de la bandera, lo primero que vamos a hacer es determinar el tamaño de la rueda porque en mi caso, no entraba en pantalla. Luego, una estructura de control de tipo Por siempre, combinada con una espera de tocar la tecla espacio. A partir de ese bloque, dentro del Por siempre, deberá estar nuestro programa de rotación de la rueda.

La rueda de la fortuna en movimiento

Para poder mover la rueda de la fortuna vamos a tener que representar las magnitudes que mencionamos anteriormente: la velocidad angular y la aceleración angular. Como en este caso la aceleración será negativa, vamos a llamarla directamente desaceleración. Creamos dos variables con estos nombres.

rueda de la fortuna en scratch desaceleración velocidad angular variables

Lo primero que tenemos que fijar es un valor inicial a la desaceleración. Esta aceleracion será fija y no cambiará en el resto del programa. Podríamos decir que se trata entonces de una constante. Sin embargo, en algún momento del programa hay que definir el valor que tendrá por siempre. Este tipo de inicializaciones es preferible realizarlo antes de comenzar el algoritmo principal. Así que fijaremos la desaceleración al principio. El valor que le pondré es de 2, porque será la medida en que decrementará la velocidad inicial que veremos a continuación. Pero primero veamos el programa con la inicialización de la desaceleración.

Acelerando la rueda

A continuación, lo que vamos a hacer es mover la rueda.  Para ello, vamos a definir una velocidad angular determinada y hacer un bucle que vaya haciendo rotar la rueda. En ese mismo bucle, iremos restándole a la velocidad angular el valor de la aceleración. De esta forma, la rueda se irá moviendo cada vez más lento hasta detenerse. Precisamente nuestro bucle finalizará cuando la velocidad angular esté por debajo del cero.

Veamos entonces los siguientes pasos de a uno. Primero, fijamos la velocidad angular a un valor cualquiera. Supongamos, 30.

rueda de la fortuna en scratch fijar valor de velocidad angular

A continuación, creamos un bloque repetir hasta que y en la condición ponemos que la velocidad angular sea menor a 0. ¿No deberíamos poner que la velocidad angular sea 0? Sí, pero como vamos a hacer restas con distintos valores, puede que en algunas vueltas nos pasemos del cero y eso haría que la condición no se cumpla nunca. Como sabemos que vamos a restar, en algún momento estaremos por debajo del cero y allí saldremos del bucle. También podríamos chequear si estamos en cero o por debajo (con una conjunción), pero para mantener la simpleza del programa, dejaremos solamente una comparación de menor a cero.

rueda de la fortuna en scratch bucle

Ahora, ¿qué tenemos que hacer dentro del bucle? ¡Hacer rotar la rueda! ¿Y cuánto debe rotar? ¡Lo que la velocidad angular nos diga! Veamos como queda el programa siguiendo esta pauta.

rueda de la fortuna en scratch rotación de la rueda

Si incluimos esta instrucción en el bloque principal de control que teníamos obtendremos el siguiente programa.

rueda de la fortuna en scratch programa

Si presionan el botón de la bandera para dar comienzo al programa y luego la barra espaciadora, verán que la rueda de la fortuna comienza a girar muy rápidamente… ¡pero no se detiene!

Desacelerando la rueda

Ahora que la rueda se mueve vamos a hacer que se detenga, pero de a poco. Entra en escena la desaceleración. Luego de girar la rueda vamos a modificar la velocidad angular, restándole la desaceleración.

rueda de la fortuna en scratch desaceleración

De esta forma, el programa nos queda de la siguiente manera.

rueda de la fortuna en scratch programa con desaceleración

Al comenzar el programa y apretar la barra ya veremos que la rueda gira y se va frenando hasta quedar inmóvil. ¡Excelente! Lo hemos logrado. Pero… algo no anda bien. Si presionamos la barra varias veces vamos a ver que la rueda cae siempre en los mismos lugares. Nuestra rueda de la fortuna es super predecible y por lo tanto, no nos sirve. Tenemos que buscar un mecanismo que haga que la haga impredecible. Algo que esté librado al azar…

Velocidad inicial al azar

El factor de azar que vamos a introducir en el programa será cambiar la velocidad angular inicial. Si no sabemos cuál será este valor, entonces no podremos saber dónde va a terminar deteniéndose la rueda. Hacer esto es muy fácil. Basta con utilizar un bloque de números al azar y ubicarlo en el bloque que fija la velocidad angular inicial.

rueda de la fortuna en scratch números al azar velocidad angular

El programa completo queda de la siguiente manera.

Ahora si volvemos a presionar la barra espaciadora veremos que ya no podemos predecir exactamente donde se detendrá la rueda.

Hasta aquí podríamos darnos por satisfechos. Hemos creado una rueda de la fortuna que funciona y que podemos utilizar. Sin embargo, siempre hay alguna mejora para hacer.

El movimiento real de la rueda de la fortuna

Si alguna vez vieron este tipo de ruedas en acción, habrán notado que no rotan exactamente como lo hace la del programa que acabamos de armar. Las ruedas de la fortuna de los programas de televisión comienzan moviéndose igual, pero al final, lo hacen de forma más lenta, aumentando el suspenso.

¿Cómo podríamos imitar ese movimiento para hacer nuestra rueda de la fortuna más realista? Así como variamos la velocidad, vamos a hacer lo mismo con la aceleración.

Con una sutil modificación del programa, vamos a fijar la desaleración inicial a 2 ya dentro del bucle por siempre. Y luego, dentro del bucle que hace rotar la rueda, vamos a ir reduciendo la desaceleración, hasta que llegue a 0,1. Los valores que elegí son arbitrarios y surgieron de la prueba y el error.

rueda de la fortuna en scratch desaceleración variable

Esto significa que la desaceleración comenzará en 2 y luego se irá haciendo cada vez más pequeña en cada movimiento de giro… 1.9, 1.8, 1.7… hasta llegar a 0.1. Esto hará que al final, la rueda no se frene tan rápido. Allí ya dejamos que se quede en ese valor. Si dejáramos que llegue a cero, la rueda no se detendría.

El programa completo debe quedar de la siguiente manera:

rueda de la fortuna en scratch programa final

Si ahora probamos presionar la barra, veremos que nuestra rueda de la fortuna tiene todo el suspenso que queríamos. Pueden cambiar los valores que usé para este ejemplo y ver los efectos que generan en el movimiento de la rueda.

Conclusiones

Con el programa que hemos creado en este artículo, hemos logrado simular el movimiento de rotación de una rueda. Para lograr esto, utilizamos los conceptos de física de velocidad angular y aceleración angular.

Noten que el programa es bastante corto. Esto es así porque Scratch nos lo hace fácil brindándonos el bloque de giro. En otros lenguajes de programación podría haber sido mucho más difícil realizar este programa.


Hasta aquí hemos llegado con la rueda de la fortuna en Scratch. En la próxima entrega vamos a jugar con los números y a aprender a determinar si un año es bisiesto o no.

¡Hasta la próxima!

Curso online de Scratch en Udemy

Si quieren dominar Scratch no pueden dejar de hacer el curso de Creación de videojuegos con Scratch de Udemy. Un curso online que cuenta con casi siete horas de video y 92 clases en total. Aprende a crear tus propios videojuegos desde lo más básico. Un curso que puede ser de utilidad tanto para estudiantes que están comenzando en el mundo de la programación, como para docentes que se están preparando para dar clases de Scratch.

Última actualización el 2018-11-13 / Enlaces de afiliados / Imágenes de la API para Afiliados

Deja un comentario

avatar
1024
Alejandro De Luca
Soy programador web. 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 Buenos Aires, Argentina.