Parece un objeto insignificante, pero programar un reloj en Scratch es un excelente proyecto de programación para aprender mucho más que simplemente sobre el tiempo. Piensa en las agujas, la sincronización, los ángulos...
Hablamos de un reloj analógico, claro, y es que un reloj digital es también una interesante propuesta aunque con objetivos diferentes. Hoy, en nuestro proyecto Scratch de los viernes, vamos a programar un reloj analógico en Scratch con el que contar las horas... y, de paso, aprender muchas cosas más.

El reloj en Scratch y las agujas

En total tres, al menos de inicio: la aguja de las horas, la de los minutos y la de los segundos. Necesitaremos, por tanto, tres objetos diferentes, pero parecidos entre sí; a efectos prácticos son tres líneas con diferentes longitudes, grosores y en el caso del segundero, de otro color (generalmente rojo).
Nota: tal y como funciona Scratch, es ideal dibujar las agujas "tumbadas" para luego, al decirle que apunten hacia arriba, lo hagan. Es una mera cuestión de practicidad.
Agujas Del Reloj En ScratchPuedes descargarte imágenes de Internet, aunque es mucho más sencillo que seas tú mismo quien crees los tres objetos y pintes cada una de las agujas. Ten en cuenta que deben ser tres objetos diferentes —e independientes entre si— y que también los centros del disfraz deben estar en el extremo izquierdo de cada segmento, ya que necesitamos que roten a partir de ese punto.

Dándole movimiento

¿Cómo giran las agujas de un reloj? Un momento, antes es necesario colocar las agujas. Cuando pulsemos la bandera verde queremos que el reloj en Scratch se ponga en la hora inicial, vamos a suponer... las 00:00. Pues nada: bandera verde, apuntar en dirección 0 (arriba), y listo. También ayudará colocar las tres agujas sobre el mismo punto central, vamos a suponer el x:0, y:0.
Código De Giro Del RelojEmpezaremos moviendo la aguja que más rápido se mueve, el segundero. Y la clave es... ¿cuánto gira? Tendremos que hacer algunas cuentas: cada 60 segundos realiza una circunferencia completa, con lo que... 360/60=6 grados por segundo. Pues esperar 1 segundo (aunque es ideal esperar menos mientras estamos probando, por ejemplo 0 segundos), girar 6 grados (¡ten en mente poner el sentido correcto del giro!).
Si repetimos este giro 60 veces, habremos completado un minuto, con lo que hay que enviarle una señal al minutero para que éste también se mueva. De nuevo tenemos que repetir las cuentas: ¿cuántos grados recorrerá el minutero cada vez que se mueve?
...
Pensando un poco —si tenemos un reloj analógico a mano es perfecto para tomarlo como muestra— llegaremos a la conclusión de que giran lo mismo, también 6 grados. Ahora falta el mecanismo de comunicación, cómo hacer que el segundero le diga al minutero que se cambie.
En Scratch existen los mensajes, algo así como que un objeto lanza una llamada que reciben otros objetos. En este caso, el segundero lanza el mensaje mueve-minutos, y el minutero lo recibe y entonces gira. Fácil, sencillo y para toda la familia. ¿Cuándo lanzar el mensaje? Cuando sepamos que ya se han avanzado 60 segundos.
Reloj Analógico En Scratch
Este mecanismo es homólogo con la aguja de las horas, aunque nos obliga a cambiar ligeramente nuestro punto de vista. Cuando el segundero haya estado moviéndose durante una hora (es decir, 60*60=3600 segundos) deberemos mandar el mensaje mueve-horas, que recibirá la aguja de las horas para moverse los grados pertinentes. ¿También 6 grados? No, porque la aguja de las horas gira menos veces para cubrir la circunferencia completa.

Hasta el infinito... y más allá

Un simple reloj puede dar mucho, muchísimo juego, y como siempre os proponemos unas cuantas ideas para continuar programando este proyecto.

  • Existen muchas formas diferentes de hacer lo mismo, ¿se te ocurre alguna? ¿Cómo puedes hacer lo mismo pero sin paso de mensajes entre objetos?
  • Un reloj así con sólo agujas parece muy moderno, pero poco habitual. Añádele marco, añádele números y, en definitiva, una estética mucho más atractiva y práctica. Y personalízala a tu antojo.
  • También podemos hacer un reloj que pite a determinadas horas, por ejemplo a las en punto y a las y media. O mejor aún, que tenga sus campanadas incluidas y simule a la torre de una catedral.
  • ¿Conoces cómo funciona un reloj de cuco? Pues vamos a simular su funcionamiento. Coloca un objeto que se "active" en determinados momentos, por ejemplo a las horas en punto. Y que se mueva, o baile, o... lo que quieras.

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 a las ideas recopiladas en este enlace o al estudio EDUCACIÓN 3.0 en la comunidad de Scratch donde estamos incluyendo nuestros proyectos de los Viernes. Y por supuesto, ¡cualquier propuesta o sugerencia que tengas será bienvenida!

Imagen: Flickr de Stacie DaPonte
Pablo EspesoPablo Espeso Tascón es Ingeniero Informático y coordinador del Club de Jóvenes Programadores de la Universidad de Valladolid (CJP @ UVa)
 

Sobre el autor
Avatar De Pablo Espeso

Pablo Espeso

Ingeniero Informático, coordinador del Club de Jóvenes Programadores de la Universidad de Valladolid (CJP @ UVa) y apasionado por la docencia de las nuevas tecnologías, de la informática y, en particular, de la programación.