ajuste-3

2do paso: poner el reloj en hora (parte III)

Ya nuestro remix del proyecto inicial de este Tutorial está en plena marcha, pero nos falta aún elaborar la parte central de nuestro trabajo: proporcionar un mecanismo de puesta en hora para nuestro reloj.
Y como somos generosos daremos más de una posible solución —ambas empleando a los monitores de 2 variables en modo deslizador (sliders) como forma de control—, y desde ya que es posible que a vos se te pudiesen ocurrir muchas más… esto es lo fantástico de programar en Scratch.
Nuestro trabajo pendiente tendrá una primera parte en común: pasemos sin solución de continuidad a tratar esta cuestión.

Matemáticas + variables@Scratch

Tal como hicimos al pergeñar un factor multiplicador que afectase a la base de tiempo de nuestro reloj, vamos a almacenar los datos decididos por el usuario en dos nuevas variables —llamadas oportunamente HORA y MINUTO —.
Pasemos entonces a crear ambas variables (algo que ya debés hacer sin problemas… caso contrario mirá aquí). Necesitaremos acto seguido cambiar las opciones de visualización de sus monitores a modo deslizador, de manera que el usuario pueda determinar sus valores (una forma de interfaz, bah).
Como los valores por defecto de mínimo y de máximo (de 0 y 100) no nos sirven , deberemos adecuarlos a las necesidades de nuestro proyecto:
  • Para HORA colocaremos 1 como mínimo y 12 como máximo.
  • Para MINUTO usaremos 0 como mínimo y 59 como máximo.
Las razones de esta elección son más que obvias (recordá que en relojes analógicos se piensa en las 12 de la noche, no en la hora cero de los relojes digitales).
Si hiciste los cosas bien deberías estar viendo algo como lo que es mostrado en esta imagen… desde ya que si querés cambiar la ubicación de los monitores es algo que dejo a tu total y absoluto arbitrio.

¿Y a-hora qué hacemos?

El punto fundamental que no debemos perder de vista al desarrollar nuestro mecanismo de ajuste responde a la siguiente pregunta: ¿qué es lo que debe ser afectado por los valores que le serán dados a las variables HORA y MINUTO?
¡Muy bien…! Lo que debe ser afectado son los ángulos de dirección donde apuntarán inicialmente tanto el minutero como el horario.
Digámoslo de una vez: nos enfrentamos a un puro problema de determinación de condiciones iniciales.

Y es así que "por fin un día le llegó el momento" a nuestro ya lejano análisis matemático de demostrar su importancia: recordemos que del mismo se concluyen dos fórmulas que vinculan las 2 variables independientes (HORA y MINUTO) con los ángulos que deben tomar las agujas minutero y horario de nuestro reloj.

Nuestras agujas ya no deberán apuntar a la dirección 0º al ponerse el reloj en funcionamiento: los ángulos iniciales deberán ser calculados usando las consabidas fórmulas, y programados utilizando los bloques operadores de Scratch.
apuntar horario
ajuste de aguja horaria
apuntar minutero
ajuste del minutero
Aquí ves como deben quedar los bloques de instrucción claves para la construcción de nuestro mecanismo de puesta en hora.
Con estos elementos a nuestra disposición ya estamos en condiciones de —por fin— proponer una primera solución.

The most simple solution

Nuestra propuesta de separación en 2 etapas hasta ahora no había afectado la programación de los objetos minutero y horario. Llegó el momento de pensar sobre esta cuestión.
Recapitulemos: la determinación del ángulo inicial de ambas agujas va a depender de la puesta en hora hecha por el usuario antes de ser arrancado el reloj: el usuario confirmará su decisión pulsando el botón que le hemos proporcionado… podemos concluir que el momento donde se determina la condición inicial angular para ambos objetos pasará a depender ahora del momento de envío del mensaje START.
Este "desplazamiento" de los bloques de condiciones iniciales apuntar en dirección ( ) desde los scripts arrancados con bandera verde hacia unos nuevos scripts (que se accionarán en respuesta al mensaje START, y que deberemos oportunamente crear) será todo lo que necesitaremos cambiar en la programación de estos 2 objetos para que esta simple solución empiece a tomar forma.
scripts minutero
scripts minutero
scripts horario
scripts horario
Reabrí el proyecto scratch watch 2 y procedé a efectuar los cambios en la programación propuestos.
Dedicá especial atención a la construcción del bloque de condición inicial angular de la aguja horaria (es la máxima complicación que enfrentarás).
Al correr más de una vez  el programa te vas a encontrar ahora conque las agujas aparecen inicialmente apuntando en cualquier dirección (salvo el segundero), pero esto no es muy distinto de lo que sucede normalmente con un reloj "real".
Pero nos queda cumplir con algunas de las metas propuestas antes de cerrar el proyecto… estas son:
  • Una vez definidos los valores horarios, el arranque del reloj recién se producirá al ser cliqueado un nuevo objeto a ser incorporado al proyecto. Utilizando al mismo deberemos también procurar un modo de informarle al usuario de esta funcionalidad (lo que debe ocurrir al inicio mismo del programa).
  • Tanto el objeto recién incorporado como los monitores deben dejar de ser visibles al comenzar el funcionamiento del reloj.

Terminemos de programar a "botón" 

En la página previa ya habíamos empezado a trabajar con la programación de este cuarto objeto. Complementemos lo hecho de manera de INTENTAR cumplir con las metas antedichas.

No hay comentarios.:

Publicar un comentario

© Scratch CodeLab | D153ñ0 b454d0 3n l4 pl4n71ll4 SimpleRWD d3 Oloblogger