¡Diez! ¡Nueve! ¡Ocho!… ¡Tres! ¡Dos! ¡Uno…! ¡Despegamos!

25 de marzo de 2022

Esta semana hemos seguido trabajando con nuestro cohete en el espacio. En la sesión anterior, aprendimos a situar nuestro cohete en la posición inicial, a comenzar la fase de ignición de un cohete y hacerlo despegar. Es decir, descompusimos nuestro problema en pequeños trozos o módulos (con los bloques de “Mis bloques”), para que nos fuera más sencillo programar cada uno de ellos y, posteriormente, juntar todos los módulos para resolver el problema completo.

Hasta ese momento, ¡nuestro programa estaba quedando fenomenal! Pero, un momento, cuando se lanza un cohete al espacio, siempre hay una cuenta atrás, ¿verdad? Pues, ¡manos a la obra! Nuestra primera cuenta atrás la empezamos en 5. Es decir, el cohete tenía que decir “5, 4, 3, 2, 1… ¡Despegamos!”, diciendo cada vez uno de los números y esperando un segundo, pues las cuentas atrás van de segundo en segundo. Ah, muy fácil, ¡ponemos 5 bloques que vayan diciendo los números!

Mmmmm, no está mal, pero, ¿si la cuenta atrás empezase (como suelen empezar las cuentas atrás en los lanzamientos de cohetes que hace la NASA o la ESA) en 10? ¡Qué fácil, pues metemos 5 bloques más! ¿Y si empezara en 25? ¡Profes, eso está “chupao”, 25 menos 10 son 15… ¡Otros 15 más y solucionado! Quizás se nos está yendo la cosa de las manos…

¿Qué podemos hacer para solucionar este problema? Quizás un bucle podría ayudarnos. ¡Sí, es verdad, en ScratchJr había un bucle que repetía las cosas las veces que le dijéramos! Utilicemos entonces un bucle “Repeat X”, donde X es el número que queremos repetir, como, por ejemplo, 10. ¡Buena idea! Sólo una cosa, ¿cómo hago para que en cada iteración (o vuelta) el cohete vaya diciendo un número consecutivo empezando por el 10 y acabando por el 1? ¡Las variables vienen a nuestro rescate! Una variable es “como una caja” en la que podemos almacenar lo que queramos, como un trozo de papel con un número escrito. Nuestra caja la podemos abrir para leerla cuantas veces queramos y también podemos cambiar el trozo de papel (o, mejor aún, borrar el número escrito en el papel y poner otro, para no gastar, que hay que ahorrar recursos naturales). ¡Anda, qué guay! Pues vamos a crear una variable con la que contar (a la que, muy originalmente, llamamos Contador, porque cuenta), a inicializar nuestra variable al valor de 10 mediante el bloque “Set Variable to 10” y a hacer un bucle con 10 iteraciones. En cada iteración utilizaremos dos bloques: el bloque de “Say Contador for 1 seconds” (¿os fijáis habéis fijado que el hueco blanco donde se pone el valor es redondeado y la variable también? ¿a qué encaja como un puzle?), para que cada número se diga durante un segundo. Por último, en cada iteración también haremos que la variable vaya decrementando su valor en uno, es decir, vayamos restando de uno en uno, mediante el bloque “Change Variable by -1” (menos uno), ya que si a un número le sumamos -1, realmente le estamos restando 1.

¡Hala, qué pasada! Pero, ¿qué ocurre si ahora queremos hacer la cuenta atrás con 25 en vez de con 10? Pues tenemos que cambiar dos veces el 10 por el 25. Mmmmm, no está mal, pero en programación, cuando para cambiar algo hay que tocar en varios sitios, ¡es una mala señal! Existe un dicho que dice Don’t Repeat Yourself (DRY) ¿Y si nuestra cuenta atrás la pudiéramos parametrizar para que la podamos usar con valores diferentes? ¡Eso es! En Scratch, para parametrizar un bloque de “Mis bloques” hay que editarlo y “Añadir una entrada”, en este caso, una entrada numérica:

Con esta entrada numérica (Add an input number or text), ya podemos utilizarla en nuestro bucle, de la siguiente forma:

¡Acabamos de crear nuestro primer bloque parametrizado y nuestra cuenta atrás ha quedado de película del espacio!

En este punto, nuestro cohete ya tiene cuatro fases: Posición inicial, Cuenta atrás, Ignición y Despegue. Pero…, cuando el cohete ha despegado, ¿a dónde va? ¡Vamos a guiarlo! Para guiarlo, lo que haremos es que el cohete siga al ratón. ¿Y cómo lo hacemos? Muy fácil, con un bucle infinito en el que apuntaremos a donde está el ratón (bloque “Point towards mouse-pointer”) y desplazaremos durante 1 segundo al cohete hacia el ratón (bloque “glide 1 secs to mouse-pointer”). ¡Anda, pero cuando lo hacemos el cohete no apunta bien, sino que parece que va “girado”! Eso se debe a que el cohete tiene los “ojos” como los tendría una persona (o nuestro amigo Gato). Por tanto, si le decimos que apunte al ratón, él apuntará con sus ojos. Si lo que queremos es que apunte con la cabeza, habrá que girarlo en el sentido del reloj 90º, como si se tumbara en el suelo. ¡Qué truco! Si lo hubiéramos girado en el sentido contrario del reloj 90º, ¿qué pasaría? ¿Y si lo hiciéramos 270º en el sentido contrario del reloj? ¡Qué curioso esto de los giros! Por tanto, nuestro bloque de Guiado, nos ha quedado así:

¡Nos lo hemos pasado genial! A continuación, os dejamos el ejercicio completo:

Podéis ver el código aquí.

¡Hasta la semana que viene!