Ejercicios con Scratch

1.- Los programas de Scratch comienzan con este elemento.

Este otro elemento nos permite esperar un tiempo a que se ejecute la siguiente orden.

Nuestro primer programa incluye los dos elementos anteriores y otro más, que obliga a desaparecer al personaje.

De esta forma, cuando iniciamos el programa, primeramente se espera un segundo y pasado este tiempo, esconde el personaje.

2.- Ahora vamos a intentar que, primeramente esconda el personaje y después lo vuelva a mostrar. Para conseguirlo podemos utilizar una estructura similar a esta.

De la misma forma podemos hacer este proceso un par de veces.

3.- Ahora vamos a hacer que se esconda y vuelva a aparecer el personaje, de forma indefinida y mucho más fácil. Para ello utilizaremos una nueva estructura, el bucle.

Este elemento repite, de forma indefinida, las ordenes que se sitúen en su interior. De esta forma podemos conseguir el mismo resultado del ejercicio anterior, simplificando el código.

4.- Ha llegado el momento de empezar a utilizar variables. Una variable es un elemento que guarda un valor numérico. Primeramente se le ha de asignar un nombre, tal como se muestra a continuación.

A las variables se les ha de asignar un valor inicial mediante esta orden.

Durante el proceso se puede sumar o restar una cantidad al valor de la variable, usando el siguiente comando.

Las variables se llevan bien con las estructuras condicionales, que tienen este aspecto.

Esta estructura nos indica que realizará las ordenes que pongamos dentro "si" se cumple la condición indicada al principio.

La manera de establecer y comprobar esa condición es usando un comparador matemático como mayor, menor o igual.

Dentro de este comparador introduciremos la variable y el valor que queramos.

Vamos a usar esta estructura para hacer que el personaje desaparezca, cuando el valor de la variable llegue a 10.

5.- Los programas también se pueden parar. Para ello se usa un comando que se puede ver a continuación.

En el siguiente programa el personaje aparece y desaparece, hasta que la variable llega a un determinado valor que hace que se pare el programa.

6.- Aparte de las estructuras de bucle indefinido "por siempre" existen estructuras de bucle que repiten las ordenes que se encuentran en su interior un número limitado de veces. Estas estructuras tienen este aspecto.

Ahora usaremos esta estructura para repetir 10 veces la aparición y desaparición del personaje.

7.- En este punto conviene que definamos que es un evento. Un evento es alguna cosa que ocurre, como por ejemplo que esté presionada una tecla o el ratón, que toquemos al personaje con el puntero del ratón, etc. A continuación se puede ver el evento "flecha arriba presionada".

También podría ser "ratón presionado".

Estos eventos se usan junto con estructuras condicionales. Ahora vamos a ver otra estructura condicional.

Esta estructura repite indefinidamente todas las órdenes que coloquemos dentro, siempre y cuando se cumpla la condición establecida.

Con un ejemplo podría ser algo parecido a esto.

En el programa anterior, mientras se mantenga presionada la tecla "flecha arriba", se vera como aparece y vuelve a esconderse el personaje.

8.- Existen estructuras condicionales que permiten determinar que se ha de hacer cuando se cumple la condición y que se ha de hacer cuando no se cumple la condición. Estas estructuras tienen este aspecto.

Podemos utilizar esta estructura para realizar un programa que esconda el personaje cuando presionamos la tecla "flecha arriba" y lo muestre cuando no se presiona.

9.- A continuación pasamos a presentar otra estructura condicional. Esta estructura repite indefinidamente las ordenes que alberga en su interior, hasta que ocurre un evento determinado. La estructura tiene este aspecto.

Aplicada a un programa podría quedar de la siguiente manera.

En el programa anterior, mientras no se presiona la tecla del ratón, se repite indefinidamente la aparición y desaparición del personaje. Una vez que presionamos el ratón, el bucle se detiene y se para el programa. Para mantener en marcha el programa, aunque presionemos la tecla del ratón, hemos de incluir una estructura "por siempre" que recoja dentro la estructura condicional.

10.- A continuación se muestra una nueva estructura condicional, que es en realidad un retardo que depende de un evento.

Si usamos esta estructura en un programa quedará de esta forma.

En el programa anterior se utiliza un bucle "por siempre" y dentro de él, un retardo condicional espera hasta que se suceda un evento, en este caso hasta que se presione el botón del ratón. Una vez presionado el ratón comienza la secuencia de mostrar y hacer desaparecer al personaje.

11.- Programas y subprogramas. El programa correspondiente a un personaje se puede subdividir en subprogramas. Para ello se utilizan las estructuras "enviar a todos" y "al recibir".

Utilizando subprogramas se facilita la escritura y la modificación de los programas, poniendo orden y simplificando. Siempre que se necesite que el programa haga algo de nuevo, no se han de volver a colocar los bloques otra vez, sin más se dirige uno al subprograma que contiene esa secuencia de bloques.

A continuación podemos ver como trabaja un subprograma con un ejemplo.

En la imagen anterior, al iniciar el programa se muestra el personaje, se espera a que ocurra el evento "presionar el ratón" y una vez presionado se "envía a todos" "esconder", es decir, se llama al subprograma "esconder". El subprograma empieza con la estructura "al recibir esconder" y a continuación el bloque que se ha de ejecutar, que es esconder el personaje.

Una vez ejecutadas las órdenes del subprograma se vuelve automáticamente al programa principal, después del bloque del que se había salido, es decir, después de "enviar a todos esconder", pero aquí ya ha terminado el programa.

Si queremos que el programa siga hemos de añadir otros bloques, tal como se muestra a continuación.

En la figura anterior hemos añadido una estructura de bucle indefinido y unos retardos para poder ver lo que ocurre.

12.- Para redirigirnos a un subprograma Scratch utiliza dos modelos de bloque. Puedes utilizar los dos para ver la diferencia.

En la imagen siguiente se ve el mismo programa con el bloque "enviar a todos esconder y esperar", lo que provoca un pequeño retardo.

13.- También podemos iniciar un programa o un subprograma, directamente, mediante una tecla o tocando el personaje con el ratón. Para ello se utilizan los siguientes bloques.

En la programación de la siguiente imagen, al presionar "flecha arriba" se inicia un subprograma que muestra al personaje y al presionar "flecha abajo" se inicia un subprograma que esconde al personaje.

En esta otra versión, al presionar "flecha arriba" se inicia un subprograma que muestra al personaje y al hacer clic sobre el personaje con el ratón se inicia un subprograma que esconde al personaje.

14.- La estructura "enviar a todos" ejecuta un subprograma que puede pertenecer a cualquier personaje que se encuentre en la animación que estamos haciendo. En el siguiente ejemplo tenemos dos personajes que se muestran alternativamente. Cuando tocamos unos de ellos este se esconde y se muestra el otro. A continuación podemos ver cada personaje con su programación.

15.- Vamos a mover nuestros personajes. Con los bloques adecuados podemos conseguir que el personaje avance y gire en la dirección que queramos. También podemos hacer que se desplace hasta un punto determinado.

A continuación podemos ver un programa típico que mueve el personaje en linea recta, una serie de pasos, en este caso 10, hacia adelante.

Variando la cantidad de pasos, podemos conseguir modificar la velocidad con la que se desplaza. Este valor puede ser decimal.

16.- Ahora vamos a hacer que gire y a la vez se desplace, aunque podríamos hacer que solo girase.

Ahora podemos hacer que avance y gire en sentido contrario.

17.- También podemos hacer que el personaje se oriente hacia adelante, hacia atrás, hacia arriba o hacia abajo. El valor 90 indica hacia adelante, 0 indica hacia arriba, -90 hacia la izquierda y 180 hacia abajo. También se pueden fijar otros valores intermedios.

18.- Con Scratch también se puede enviar al personaje a un punto determinado, tal como se indica a continuación.

En vez de ir de forma instantánea se puede hacer que se desplace aun punto determinado en un tiempo determinado.

19.- También podemos conseguir que el personaje siga al ratón, en orientación y en posición..

20.- Podemos enviar al personaje a unas coordenadas determinadas y después cambiar de diferentes formas estas coordenadas. En el siguiente programa, una vez hecho el primer desplazamiento, se vuelven a fijar los valores de las coordenadas y a realizar un nuevo desplazamiento.

En este otro programa, "cambiar X por" incrementa el valor de X en 10 unidades.

Otra posibilidad es utilizar el valor actual de los valores de X e Y del personaje para modificarlos matemáticamente, de la forma que se desee.

Lo mismo puede hacerse con la dirección.

21.- cuando desplazamos un personaje por el escenario puede ser que se salga del mismo y se nos pierda. para que esto no ocurra podemos hacer que rebote en el borde del escenario.

Esto mismo lo podemos conseguir con una estructura condicional que reacciona ante un evento.

22.- Ahora has de crear un fondo y un personaje como los que se muestran a continuación. El fondo tiene un marco rojo y el personaje es un círculo amarillo.

Podemos comprobar como se comporta con este primer programa.

Ahora probaremos este otro que incluye una estructura condicional que hace girarse al personaje cuando toca el marco rojo, para intentar que no se salga hacia él.

Para continuar este ejercicio has de crear otro personaje que será un círculo azul.

Primeramente has de añadir un programa que consiga hacer desaparecer el personaje azul, cuando le toque el personaje amarillo en su movimiento.

En una segunda fase añadiremos más bloques para conseguir mover el personaje azul mediante las cuatro flechas del teclado.

23.- Un mismo personaje puede tener diferentes aspectos, que es lo que en Scratch se conoce como disfraces. Para poder tener estos disfraces hemos de utilizar el editor gráfico de los mismos.

El gato de Scratch viene con dos disfraces que podemos utilizar para simular que camina.

Prueba a utilizar estos disfraces con el siguiente programa.

Ahora modifica los dos disfraces del personaje pintando sus ojos de azul y pon en marcha la animación de nuevo.

De la misma forma se pueden crear otros disfraces desde cero o a partir de la copia de uno de ellos. De esta manera crea dos disfraces con un cuadrado rojo y uno azul y prueba de nuevo el programa anterior.

Para hacer que vuelva el personaje desde el borde del escenario podemos utilizar esta modificación del programa.

De la misma manera que los personajes pueden tener más de un disfraz, los escenarios pueden tener más de un fondo. A continuación crea dos fondos para tu escenario.

Ahora vamos a modificar el programa para que cambie de escenario cada vez que el personaje llegue al borde. Para ello hemos de modificar el programa del personaje y también crear un programa par el escenario.

Este es el programa del escenario.

Ahora pon en marcha la animación y verás los resultados.

24.- Ahora vamos a ver como podemos agrupar varias variables en una matriz, que es lo que Scratch conoce como una lista. A continuación lo podemos ver con un ejemplo. A la lista le hemos dado el nombre "matriz". Los diferentes elementos de la lista están ordenados, por lo que después de crearlos se pueden recuperar para utilizarlos, modificarlos o borrarlos. Cada elemento de la lista puede contener un valor numérico o una cadena de texto.

En el siguiente programa primero se da contenido a los cinco primeros elementos de la lista "matriz" y, a continuación, utilizamos este contenido para hacer hablar al personaje, durante dos segundos.

Al introducir los valores de los elementos de la lista, lo hemos de hacer en orden, de forma que para poder dar valor al que ocupa la segunda posición hemos de haber introducido el que ocupa la primera posición, y así sucesivamente. Por esta razón el programa siguiente no registra todos los valores. Solamente quedan registrados los calores que ocupan la primera, segunda y tercera posición.

Por otra parte, el orden en que recuperamos los valores ya introducidos es indiferente, tal como se puede ver en el programa siguiente.

Lo mismo que podemos introducir elementos en una lista, también los podemos eliminar. Esto es lo que hace el bloque "borrar 4 de matriz" en el programa siguiente. Una vez borrado este elemento de la lista, el elemento que ocupaba la quinta posición pasa a ser el que ocupa la cuarta posición.

Podemos ver que el programa hace lo mismo que si lo escribimos de esta otra manera, tal como se muestra en la siguiente imagen, porque desaparecido el cuarto elemento, el quinto pasa a ocupar esta cuarta posición.

Ahora vamos a probar de introducir datos de otra manera. También podemos usar el bloque "añade" para introducir el contenido de otro elemento de la lista, que se colocará a continuación del último existente.

Una vez creada una lista de varios elementos, también podemos cambiar el contenido de alguno de ellos, mediante el bloque "reemplazar", tal como se muestra a continuación.

Ahora vamos a hacer que hable el personaje con el contenido de la lista, pero de una forma diferente, utilizando un bucle de repetición por un número limitado de veces. De esta forma es como si recorriésemos la lista recogiendo el valor de cada elemento de la misma.

Esto mismo lo podemos hacer utilizando el valor de la longitud de la lista, tal como se muestra a continuación.

Si el contenido de un elemento de la lista es un número se puede trabajar de forma aritmética con él.

25.- A continuación debes realizar un ejercicio por ti mismo, utilizando listas (matrices). En la primera parte del programa debes guardar en una lista el nombre de 6 frutas. A continuación nuestro personaje dirá el nombre de cada una de las frutas, pero de esta forma: "el pomelo es una fruta". Como se puede ver en el momento de decir el nombre de las frutas, le añadimos al nombre "es una fruta".

26.- Ahora también harás la animación por ti mismo. Sobre un tablero de inicio similar al siguiente:

Ten en cuenta que cada cuadrado de color será un personaje.

Cuando se hace clic con el ratón sobre un cuadrado cambia de color, de forma que del negro pasamos al rojo, del rojo al azul y del azul al negro y así sucesivamente.

27.- Vamos ahora a trabajar con números. Veamos como podemos redondear un resultado.

Primeramente se asigna un número a la variable "valor", posteriormente se multiplica por 0,99 y finalmente se redondea el resultado.

28.- El operador numérico "mod" nos proporciona el valor del resto de una división entre dos números, tal como se muestra a continuación.

29.- Es el momento de profundizar en las funciones lógicas.

Observa que los tres bloques condicionales son diferentes. En el primero se han de cumplir dos condiciones a la vez (Función lógica "Y"), en el segundo se ha de cumplir una u otra condición (Función lógica "O") y en el tercero no se ha de cumplir una condición (Función lógica "No").

30.- Además de suma, resta, multiplicación y división, Scratch puede hacer cálculos más complejos como la raíz cuadrada o las funciones trigonométricas.

31.- En este otro ejemplo se utiliza la función matemática seno ("sin") para dibujar ondas sucesivas.

Este es el aspecto que queda en la pantalla.

32.- Ahora modifica el programa anterior de forma que antes de dibujar una nueva onda se borre la anterior.

33.- Vamos a entrar ahora en el mundo de los laberintos, comenzando por un laberinto en espiral. La imagen de fondo del escenario del primer laberinto es la siguiente.

Has de hacer un programa que haga que el personaje (Un pequeño cuadrado negro) se adentre hacia el interior del laberinto, tal como se muestra en el vídeo. Haciendo avanzar al personaje y orientándolo convenientemente se puede conseguir que vaya girando. Puedes utilizar un bloque condicional con un sensor "¿Tocando el color?".

34.- Modificaremos la animación anterior con seis personajes iguales, que vayan apareciendo sucesivamente y avancen juntos hacia el interior del laberinto.

35.- Seguiremos modificando el laberinto anterior, haciendo que los personajes aumenten de tamaño, cada vez que cambian de dirección.

36.- En esta nueva versión del laberinto en espiral añadiremos dos efectos. Por un lado, a cada personaje le dotamos de tres vestidos, pintando el cuadrado de colores diferentes. A cada cambio de dirección el cuadrado aumenta de tamaño y cambia de color. Además cuando se tocan entre si los personajes, en el centro del laberinto, desaparecen y vuelven a empezar el camino.

37.- Ahora vamos a adentrarnos en laberintos irregulares, en donde se deben realizar giros a la derecha y también a la izquierda.

El nuevo fondo del escenario es este.

Las paredes son de color rojo, pero tienen el interior negro. De esta forma el personaje puede ir siguiendo el recorrido, pegado a la pared, pero sin entrar en la zona negra. Si deja de detectar el color rojo, gira hasta encontrarlo.

38.- Sobre el ejercicio anterior vamos a hacer un pequeño juego con dos niveles y tres personajes. El personaje que entra de forma automática en el laberinto es un oso hormiguero que se quiere comer la hormiga que hay en su interior. La hormiga, por su parte, ha de salir del laberinto. Para ello la podemos mover con las cuatro flechas del teclado. Si choca con la pared del laberinto vuelve a la posición de partida. Si consigue salir del laberinto pasa al segundo nivel del juego. Si antes de conseguir salir del laberinto el oso lo recorre en su totalidad se acaba la partida.

En el segundo nivel el fondo es un cuadrado enmarcado en rojo con un círculo amarillo en el centro. Aparece un segundo oso hormiguero que se mueve por todo el espacio intentando comerse a la hormiga. Si la hormiga logra llegar al círculo amarillo gana la partida.

39.- A continuación vamos a realizar un juego de pájaros que se disparan contra cerdos que se mueven de derecha a izquierda.