Con ayuda de la siguiente guía armaremos un proyecto que nos permita controlar algunas funciones de nuestro personaje “gato”, añadiendo varias instrucciones de los diferentes menús de herramientas:
La variable “pasos”, que podemos ver en la parte derecha de esta imagen, nos permitirá conocer cuál es el valor que se almacena en la misma mientras se ejecuta el programa.
Adicionalmente, hay dos modos más en que podemos "ver" el valor de la variable mientras se ejecuta el algoritmo: podemos acceder a ellos haciendo clic derecho; sobre el monitor aparecerá un menú desplegable que permitirá acceder a las opciones “grandes” o “deslizador”. Si deseamos ocultarla del monitor, podemos seleccionar la opción de ocultar.
Regresemos a los bloques que nos permitirán manipular la variable: dos de ellos serán los más importantes: “fijar” le impone un valor más allá de cuál haya sido el valor previo, y “cambiar” le sumará un número positivo o negativo al preexistente.
Los bloques “mostrar” y ”esconder” permiten manipular desde el programa la visibilidad de la variable ( el mismo monitor sobre el cual hablábamos más arriba).
La casillita de chequeo nos ofrece la manera más rápida de ocultar/mostrar el monitor.
No nos olvidemos de la variable “pasos”, que es la que tendremos que arrastrar y colocar dentro de aquellos bloques donde pueda aparecer un valor numérico fijo.
Si bien en nuestro trabajo usaremos las variables como "contenedores" de valores numéricos, a partir de la versión 1.4 de Scratch ellas también pueden almacenar cadenas de texto (palabras o texto). Esto permite ampliar el universo de opciones a la hora de enriquecer proyectos anteriores, o idear nuevas, basados en esta posibilidad.
Ya aprendimos a crear una variable. Ahora veremos cómo hacer para que el valor sea 0 (cero) “si” el mouse pasa sobre el gato; en caso contrario su valor deberá ser 10 (diez). Suena bastante a que el algoritmo debe posibilitar el tomar una decisión a partir del hecho de evaluar una condición. Es ahora donde ponemos en práctica las estructuras de control del tipo condicional.
El reflejo de nuestras palabras en el programa debería conducirnos a algo como lo que ya está viendo. Es importante que se note una cosa: al llegar a este bloque de decisión, el hilo de ejecución de las instrucciones se bifurca: es decir, "o" se sigue un camino “o” el otro, pero nunca ambos a la vez”. O determinamos que la variable tenga valor 0 o valor 10.
La estructura condicional se utiliza para indicarle al computador que debe evaluar una condición y, a partir del resultado, ejecutar el bloque de instrucciones correspondientes. La forma más común está compuesta por una proposición (condición) que se evalúa, y dos bloques de instrucciones que se ejecutan, uno cuando la condición es verdadera (selección simple y doble) y otro cuando esta es falsa (únicamente en la selección doble).
Fundamental: se reemplazó el valor fijo 10 en el bloque de movimiento por el bloque que representa a nuestra variable “pasos”. Ahora el gato se moverá una cantidad de pasos igual al valor que tome la variable, y esto es cambiante dependiendo de si el puntero del mouse lo esté tocando o no.
Se agregó el bloque “fijar [pasos] a (10)” como condición inicial: recordemos que al crear la variable, su primer valor será cero y conviene cambiarlo. De cualquier manera no es de mayor relevancia para el funcionamiento del programa, y podría haberse obviado.
Se agregó el bloque “decir” para que el gato "proteste" por dos segundos en caso que el puntero del mouse interfiera en su desplazamiento (comportamiento que definimos al principio de este mini-proyecto y lo puedes ver en el tutorial).
Nos damos cuenta que esta última instrucción "detiene" la secuencia de ejecución de bloques por dos segundos. Si al cabo de los mismos el puntero sigue tocando al gato, este volverá a repetir su "queja" por dos segundos más, y así hasta que deje de producirse el contacto.
Tome un poco de tiempo para entender el funcionamiento del programa antes de seguir. Puede aprovechar el monitor de la variable para enterarse de los cambios en su contenido y probar cambiando valores.
Falta agregar un contador de la cantidad de veces que interrumpimos el andar de nuestro gato, y esto deberá aparecer en pantalla ¿Qué mejor que una nueva variable para almacenar estos valores y usar su monitor para ir viendo "el tanteador"?
Pasemos directamente a crear otra variable que llamaremos “toques”. Una vez hecho esto aparecerá un nuevo bloque representando a la nueva variable, y también un nuevo monitor en el escenario.
Observe que en el Área de Selección de bloques no aparecen nuevos bloques “fijar”, “cambiar”, etc., vinculados a esta nueva variable en especial: desde la versión 1.4 de Scratch estos bloques disponen de una lista desplegable que nos permiten seleccionar las variables existentes.
Como seguro ya está viendo, un bloque “cambiar [toques] por (1)” deberá ser colocado dentro de la estructura condicional, obviamente para ser ejecutado “solo si” la condición ¿tocando apuntador del ratón? es verdadera.
Si no fuese así, la primera vez que usemos el programa, la variable “toques” hubiese sido cero porque cero es el valor inicial por defecto de cualquier variable. Pero si paramos y arrancamos luego el programa, Scratch no se encarga de resetear su valor, y por tanto siempre va a quedar el último valor almacenado en la variable como nuevo valor de inicio.
Los valores almacenados por nuestras variables son de nuestra más absoluta responsabilidad, y la única decisión del entorno es asignarle el valor ”0” por defecto al ser creada; de ahí en adelante nos deberemos ocupar nosotros.