En el anterior proyecto Scratch de los viernes hablábamos de cómo crear un reloj analógico en Scratch, y hoy le vamos a dar una vuelta de tuerca a esa idea con algo parecido... pero diferente. Cómo crear un reloj digital en Scratch, con los mismos principios fundamentales de funcionamiento y asimilación del tiempo, pero con un formato y funcionamiento diferente.
El reloj analógico es una de las piedras angulares en la educación primaria, pero luego resulta que la mayoría de personas utilizan otras versiones para medir el tiempo. Hoy, en nuestro proyecto Scratch de los viernes, vamos a construir un reloj digital desde cero. Con él aprenderemos cómo funcionan las horas y los números, manejaremos disfraces y también le podremos dar un toque de diseño personalizándolo a nuestro antojo.

El reloj digital en Scratch

Lo primero que debemos plantearnos es cómo funciona este tipo de reloj. Para poner las cosas fáciles desde el punto de vista de programación vamos a plantear sólo la parte de los minutos y los segundos; luego lo ideal será añadir las horas, pero eso ya lo dejaremos como "deberes".
Esencialmente se trata de cuatro cifras que van cambiando, siguiendo un determinado orden. Estas cuatro cifras las podemos dividir en dos grupos, de dos cifras cada uno: dos para contar los segundos (a la derecha) y otros dos para contar los minutos (a la izquierda); utilizaremos el símbolo de : como separador.
En este caso tanto los segundos como los minutos tienen un comportamiento similar: una cifra para las decenas y la otra para las unidades. Las unidades se mueven entre 0 y 9; las decenas, entre 0 y 5.
Números En Scratch
No es necesario que nos compliquemos a la hora de escoger las imágenes que representarán cada número, ya que el propio Scratch incorpora entre sus imágenes algunos disfraces con estos números que encajarán bastante bien.

Prepara los cuatro objetos

Disfraz Con Números En ScratchDecíamos que necesitamos cuatro objetos que representen cada una de las cifras. Cada uno de ello contendrá tantos difraces como números tenga que representar, de forma que:

  • Las decenas tendrán seis disfraces (entre 0 y 5).
  • Las unidades tendrán diez disfraces (entre 0 y 9).

Una vez hayas cargado estos disfraces a cada objeto deberás posicionar y colocar cada cifra en el lugar donde corresponde, para que tengan el orden que debe tener. Te ayudará renombrar cada objeto para así entender mejor qué es cada número.
Una primera propuesta es hacer que cuando comencemos el programa (es decir, cuando pulsemos la bandera verde) el reloj comenzará desde cero. Deberemos hacer que el primer disfraz sea el que tiene el número cero.

El tiempo pasa

Y entramos en la parte que más similitudes tiene con la del reloj analógico, como es la de sincronizar todos los objetos y hacer que pase el tiempo.
Las unidades de segundo tendrán que esperar un segundo y pasar al siguiente disfraz; durante diez veces. Repetimos 10 veces (Control, color amarillo) siguiente disfraz (Apariencia, color morado); una vez hayamos repetido estas diez veces habremos completado un ciclo, y por tanto las decenas de segundo deberán pasar al siguiente disfraz. Para ello es necesario mandar un mensaje al respectivo objeto para que lo haga.
Este mismo objeto, una vez haya pasado al siguiente disfraz, puede comprobar si está en el disfraz que contiene el cero. En este caso significará que ha dado una vuelta completa, con lo que a su vez mandará un mensaje a las unidades de minuto para que hagan lo mismo. Este funcionamiento se repite para el resto de objetos salvo el último (en nuestro caso, decenas de minuto) que sólo cambia al siguiente disfraz, pues no tiene "a quién" avisar. Algo así:
Código Reloj Digital

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

Como siempre ésta es nuestra propuesta inicial para crear un reloj digital en Scratch, el punto de partida para mucho (¡mucho!) más. Hemos colgado por aquí una primera versión para que podáis comprobar el código, y a continuación os planteamos algunas ideas para continuar con él:

  • ¿Acaso los relojes digitales sólo cuentan segundos y minutos? Añade horas, y ten en mente que el código será algo bastante parecido a lo que tienen los minutos.
  • Puedes darle un toque personal añadiendo tu propio diseño, cambiar los números y los disfraces por lo que tú quieras. Otros colores, otras formas, dibujos... ¡lo que quieras!
  • ¿Te has fijado alguna vez en que el separador también cambia? Parpadea, a medida que pasa el tiempo. ¿Sabrías cómo añadir esto?
  • Hemos dicho que el reloj se ponga "a cero" cuando comienzas el programa, pero una genial opción es que nos pida qué hora quiere que pongamos. Si quieres un reto avanzado, esta propuesta es la tuya.
  • Otra propuesta es añadir alarmas, de forma que cuando el reloj alcance un determinado valor suene algún tipo de ruido que nos despierte. Será ideal que en algún momento se pregunte por la hora a la que queramos poner esta alarma, por ejemplo pulsando la letra 'A' (de alarma, claro).

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 alas 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!

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.