El proyecto Scratch de los viernes (VII): la gravedad en Scratch

La gravedad en Scratch es uno de los problemas más recurrentes de la programación, y aunque la solución es relativamente sencilla - para un adulto -, a los chavales les cuesta entender algunos conceptos básicos y fundamentales. Sin embargo, el punto curioso es que todos saben cómo funciona.
Si quieres crear un proyecto en Scratch con gravedad, puedes hacerlo de muchas formas. Algunas más complejas con fórmulas matemáticas tremendamente reales, y otras más sencillas y aptas para todas las edades. Hoy vamos nuestro proyecto va sobre esto: la gravedad en Scratch y muchas ideas que se pueden hacer con ella.
Índice de contenidos
Podemos aprovechar este proyecto para, según sea la edad de los chavales, proporcionar los conocimientos relacionados con la gravedad o bien afianzarlos entre los que ya los conozcan. Ya sea dentro de la materia de física o ciencias, la gravedad es un concepto que aunque no se conozca formalmente todo el mundo sabe de qué trata, e incluso un niño de corta edad puede definir sus principales características sin problema, simplemente fijándose en su entorno.
Con esto, el Diccionario de la Real Academia Española de la Lengua proporciona la siguiente definición:
2. f. Fís. Fuerza que sobre todos los cuerpos ejerce la Tierra hacia su centro.
Mientras que Wikipedia afirma lo siguiente:
La gravedad es una de las cuatro interacciones fundamentales. Origina la aceleración que experimenta un cuerpo físico en las cercanías de un objeto astronómico. También se denomina interacción gravitatoria o gravitación.
Por efecto de la gravedad tenemos la sensación de peso. Si estamos situados en las proximidades de un planeta, experimentamos una aceleración dirigida hacia la zona central de dicho planeta —si no estamos sometidos al efecto de otras fuerzas—. En la superficie de la Tierra, la aceleración originada por la gravedad es 9.81 m/s², aproximadamente.
Teniendo en cuenta que nuestro objetivo es crear un proyecto Scratch que simule la fuerza gravitatoria podemos utilizar una definición más 'casera' de lo que es la gravedad, y que nos permitirá además enlazar el concepto con los componentes e instrucciones necesarias para programar en Scratch. Según sea la edad de los chicos necesitaremos aportar detalles más profundos o, en el caso contrario, omitir características que no sean fundamentales.
De esta forma, la gravedad puede definirse como una fuerza siempre en dirección vertical, con sentido hacia abajo, y que actúa por siempre. Su efecto es visible hasta que el objeto está posado sobre una superficie, cuando entonces actúan otras fuerzas que modifican la interacción.
La gravedad en Scratch es uno de los problemas más recurrentes para todo programador, y la implementación no es trivial... aunque tampoco imposible. Realmente es fácil, aunque hay que pensar un poco y darle a la cabeza para sacarla.
En primer lugar, la gravedad se caracteriza por ser una fuerza siempre en dirección vertical, y sentido hacia abajo. Necesitaremos crear 'algo invisible' que simule ese comportamiento.
Este 'algo' será, simplemente, un conjunto de bloques en Scratch que empujen al objeto hacia abajo, y que estén ejecutándose por siempre (la gravedad actúa las 24 horas del día, los 365 días del año)... salvo cuando el objeto en el que actúa este posado sobre una superficie. Vamos a asumir que esa superficie va a ser siempre el suelo, que lo vamos a simular con una línea de color marrón sobre el escenario (hay otras implementaciones posibles, como una objeto que incluya esa línea o como cualquier objeto; esto, para los más avanzados).
Con esto ya podremos empezar a programar la gravedad en Scratch, para tener una estructura parecida a la que os ponemos a continuación y que incluye un por siempre y un repetir hasta que [estemos tocando el suelo]. Nótese que cuando estamos en el suelo, aunque en la realidad la fuerza gravitatoria continúa actuando, no se observan diferencias ni cambios en los objetos, que se mantienen inmóviles.
Para probar que la gravedad funciona deberemos aplicar algún tipo de movimiento a un objeto. Por ejemplo, hacer que el gato salte.Es muy común hacer que un objeto responda a movimientos con las flechas de dirección, pero implementar un 'salto' es algo ligeramente más avanzado: el salto implica un movimiento hacia arriba y otro hacia abajo. La segunda parte ya la tendremos (es la acción de la gravedad que ya hemos implementado), con lo que solo tendremos que crear la acción hacia arriba, el salto.
También puede implementarse de forma que sea un salto progresivo y no una 'traslación' repentina, haciendo uso de un bucle repetir. Deberemos jugar con los valores de repetición del bucle y con el valor de traslación de la instrucción que modifica la coordenada y para conseguir un salto lo más realista posible.
¿Funciona la gravedad? En este caso, continuemos.
Éste no es más que una pequeña funcionalidad que nos permitirá crear millones de otros proyectos partiendo de ella, es solo una parte de lo mucho que podremos poner en marcha gracias a la gravedad en Scratch. A continuación, algunas ideas más:
El proyecto Scratch de los viernes es la sección en la que, cada quinto día de la semana, proponemos una idea de proyecto y damos algunas pistas para llevarlo a cabo. Hemos hablado de movimientos, figuras geométricas, historias, juegos de preguntas y respuestas, videojuegos… ¿Quieres saber más? Échale un vistazo las ideas recopiladas en este enlace y, por supuesto, ¡cualquier propuesta o sugerencia que tengas será bienvenida!