Autor: Agustin Gonzalez Redondo. M Rocío García de la Fuente.
En un artículo anterior se ha analizado la aplicación, acercándonos al mundo de la programación con un sencillo programa en el que se daba movimiento a un personaje animado.
En el presente artículo se pretende dar una visión más general de las herramientas más típicas de cualquier lenguaje de programación, existentes en todos los lenguajes y códigos, cada una con una estructura distinta en función del lenguaje empleado, pero con un significado común a todas ellas. Comenzando así una serie de artículos en los se tratará de dar una visión general de la programación con Scratch.
El trabajo se centrará en el uso de condicionales, bucles y variables, para configurar una historia en la que interactuarán de forma continuada dos personajes.
Las condicionales permiten tomar decisiones en el código siempre y cuando se cumpla una premisa. Gracias a estos operadores podremos decidir qué hacer, dependiendo del resultado ejecutará un código u otro. En Scratch hay dos tipos dentro del bloque de “Control”:
- Simple (figura 1): ejecuta un bloque de instrucciones cuando la proposición es verdadera, en caso contrario no hace nada.
- Doble (figura 2): la estructura ejecuta un bloque de programas cuando la condición de entrada es verdadera, y ejecuta otro distinto cuando dicha condición es falsa.
Lo bucles son sentencias que ejecutan repetidas veces un trozo de código, hasta que la condición asignada a dicho bucle deja de ser cierta. En Scracth, también dentro del bloque de “Control” existe varios tipos:
- Repetir (bucle for) (figura 3): instrucción en la que se puede ejecutar una instrucción conociendo de antemano el número de iteraciones (repeticiones).
- Repetir mientras (Do .. While) (figura 4): este bucle realizará un trozo de código de forma repetida siempre y cuando se cumpla una determinada condición, por ejemplo una de las situadas en el bloque “Sensores”.
- Por siempre (figura 5): repite una serie de instrucciones de manera continuada cuando se está ejecutando el programa.
El último punto a tratar en el presente artículo son las variables, o estructuras de datos referenciadas por un nombre que pueden cambiar de contenido durante la ejecución del programa. Así, con Scratch se pueden crear etiquetas, utilizando el bloque “Datos” (figura 6), asignándoles un valor inicial susceptible de ser modificado durante la ejecución del programa, empleando los operadores presentes en el bloque “Operadores”.
También hay que decir que para poner en práctica todo lo visto con anterioridad, Scratch permite realizar programación en paralelo, otros lenguajes no lo permite, en definitiva el programa escrito puede realizar varias tareas al mismo tiempo, lo que simplifica en muchos casos la edición, permitiendo seccionar el programa en trozos más pequeños que resuelvan un problema concreto.
Para dar comienzo al programa, se seleccionará un Fondo nuevo dentro de los que el programa Scracth tiene disponible (figura 7), y creamos los disfraces del primer personaje, editándolos con la herramienta que Scratch tiene para ello, en este caso se duplica el disfraz1 y se le da la vuelta, para sustituir al disfraz 2 (figura 8).
A continuación y para comenzar a programar es interesante comenzar por situar al personaje siempre en la misma posición y con el disfraz y el tamaño que se desea, para evitar posibles errores debidos a comienzos no controlados (figura 9).
Se crean ahora dos variables que determinarán el estado en el que se encuentra el personaje, la primera de ellas “vel_x”, servirá para determinar la velocidad de desplazamiento en horizontal de este objeto, con valor 5 inicial, mientras que la segunda de ellas indicará cuando se debe mover el personaje, inicialmente se le dará un valor 0 y se cambiará por programación a 1 si se desea detener el personaje (figura 10).
Aprovechando la posibilidad que brinda Scratch para programar en paralelo, creamos ahora un programa que permita dar movimiento al primer personaje en función de la variable que controla su movimiento, empleando dos de los bucles de repetición analizados con anterioridad (figura 11).
De la misma forma, se crea otro programa paralelo, ahora para controlar cuando el personaje alcanza uno de los extremos se genera un código que primero separa al objeto del borde, y así evitar contactos indeseados, después modifica la velocidad de movimiento del objeto invirtiéndola, si bien el programa no hace correctamente la cuenta indicada, que ha tenido que ser modificada para adaptarse a la situación, y por último cambia el disfraz para que mire en la dirección del desplazamiento (figura 12).
Se crea en este momento un nuevo personaje, y para aprovechar la programación elaborada hasta el momento, sólo se necesita duplicar el primer elemento, y realizar pequeños cambios en la programación y en los disfraces del nuevo personaje, así de forma similar a como se realizó con el primer personaje, se modificarán su posición y aspecto inicial así como la velocidad de desplazamiento (figura 13), comprobando que el programa se comporta como debe.
Finalmente, falta la interacción entre ambos personajes, que se producirá cuando ambos se toquen, para lo que será necesario emplear la variable “stop” definida al comienzo del proyecto, para detener a los dos personajes, por lo que basta con emplear un condicional doble que modifique el valor de la variable en función de la situación de ambos personajes (figura 14). El valor 1 de «stop» se corresponde con los personajes detenidos, momento en el que se da comienzo a un diálogo entre ellos.
Para establecer el diálogo se emplea una condicional simple, ambos dentro de un bucle por siempre, que se ejecuta continuamente durante el programa (figura 15), y que sólo tiene lugar cuando hay un contacto entre los personajes. Una vez finalizado, se procede a realizar un desplazamiento de ambos protagonistas, para evitar un nuevo contacto que diera lugar, de forma involuntaria, a la repetición de todo el diálogo.
Así, de una forma sencilla y empleando todas las herramientas de programación vistas hasta el momento, si se divide un problema complejo en varias partes más sencillas de resolver, gracias a la posibilidad de programar en paralelo que ofrece Scratch, se puede conseguir dar vida y animar una historia.
AUTOR: AGUSTÍN GONZÁLEZ REDONDO