sábado, 12 de marzo de 2016

Flappy Bird. Paso a paso


Vamos a realizar un proyecto en Scratch de un juego, muy sencillo, pero que tuvo muchísimo éxito: Flappy Bird.
Nuestros alumnos conocen bien el juego y quizá esto les motive para programarlo en Scratch.
Si vosotros no lo conocéis, lo primero es jugar un rato. El juego es sencillo, tenéis que tocar la tecla espacio para que el pajarito no toque ni el suelo, ni las tuberías que irán apareciendo en su camino.



Como habéis visto, el proyecto tiene 3 elementos principales:
  • Fondo
  • Pajarito.
  • Tuberías.
Vamos a ir viendo cómo programamos cada uno de ellos. Para ir probando el código, os dejo el proyecto solo con los objetos. A partir de él id haciendo la práctica.

Empecemos con el fondo: si os fijáis, Flappy no se mueve del medio del escenario, es el fondo el que se va moviendo para dar la sensación de que el pajarito avanza. Tenemos una imagen cuyo tamaño es el mismo que el escenario, 480x360. Si lo movemos horizontalmente, tendremos que modificar la coordenada x en cada momento. Vamos a crear copias que avancen al mismo tiempo (clones). Con tres clones arreglamos el problema, uno situado a continuación del anterior.
Cuando trabajemos con clones, lo primero que hacemos es esconder el original. Crearemos una variable de objeto (solo para este objeto, yo la he llamado fondo), que nos identifique el clon, para así poder colocarlos en sus coordenadas iniciales una vez que se han movido a lo largo del escenario.
El primer clon lo situamos en el origen (0,0)
El segundo clon lo situamos en (480,0)
El tercer clon a continuación (480*2,0)
Cuando empiecen como clones, los mostramos y los movemos el largo del escenario, volviendo a su punto inicial al terminar, y así lo repetimos por siempre.


Como veis en el código, hay una pequeña modificación, he repetido 465 en vez de 480, porque hay un pequeño trocito de la imagen, que aunque las coordenadas del objeto lo dejen fuera del escenario, en los bordes se ve. Por eso colocaremos un borde negro encima.

Hay algunos tutoriales en Scratch, sobre este tema. Os recomiendo este proyecto, que explica como hacer un "scroll", para ir pasando pantallas con las flechas del teclado.

Bueno, ya tenemos nuestro fondo, moviéndose sin parar...vayamos ahora al siguiente objeto, nuestro pajarito Flappy:
Lo primero que vamos a hacer es el movimiento de las alas, eso simplemente lo conseguimos cambiando continuamente de disfraz.


Como es un poco grande, para hacerlo más pequeño, utilizaremos una sentencia que encontraréis en Apariencia: Fijar tamaño a 50%. También lo enviamos al frente (por si está debajo del objeto fondo y no lo vemos) y lo situamos en un punto fijo del escenario, por ejemplo en el (0,100).
Ahora vamos a añadir el efecto de la gravedad. Flappy está continuamente "cayendo" a no ser que el usuario toque la tecla espacio para levantarlo. Esto es simplemente modificar la coordenada y, por siempre, con un número negativo, por ejemplo -2. Y si se toca la tecla espacio, cambiar y, por una cierta cantidad positiva, por ejemplo 20. Estas cantidades pueden ser variables e ir modificándolas al avanzar el juego, para añadir dificultades, diferentes niveles...etc



Bien, ya solo nos queda programar al pajarito para que si toca el suelo, o toca las tuberías termine el juego. Para que Flappy no siga moviéndose, se puede hacer de varias maneras, quizá la más sencilla sea hacer un sello y esconder el personaje. Enviamos a todos los objetos un mensaje para avisarles de que el juego ha terminado y podemos tocar un sonido que señale el final del juego. Por último detenemos todos los programas.


Con esto estaría terminada la programación de Flappy. Vamos ahora con las tuberías.
Como son pequeñas, podemos aumentar su tamaño a 180% por ejemplo.
Borramos todo al inicio, para quitar los sellos que hemos hecho al final de la partida.
Como veis en el proyecto, tenemos dos disfraces. Vamos a utilizar copias (clones), para que aparezcan en la escena aleatoriamente. Para ello creamos una variable que guardará un número aleatorio entre 0 y 120 por ejemplo, dependiendo del espacio que queráis dejar para que pase Flappy.
Como siempre que utilizamos clones, escondemos el original. Fijamos la variable a una cantidad aleatoria y esperamos también un número aleatorio de segundos para que aparezcan al azar. Después creamos los clones y los colocamos en la parte derecha del escenario.


Al comenzar como clon, mostramos y movemos las tuberías hacia la parte izquierda cambiando la coordenada x. Si las tuberías sobrepasan el medio de la pantalla (donde está Flappy), añadimos un punto a nuestro marcador (0,5 por cada clon, ya que son dos, la parte de arriba y la parte de abajo).

Creamos pues una variable global que vaya guardando los puntos. Podemos también añadir un sonido cada vez que esto ocurra. Y cuando lleguen al extremo izquierdo de la pantalla borramos el clon. Como tocará el color negro del marco, lo he hecho añadiendo la opción "repetir hasta que toque el color negro".



La velocidad dependerá del número que restéis a la coordenada x, por tanto este número también podría ser variable y aumentar la dificultad en el juego según vayamos avanzando.

Al recibir el mensaje fin, podemos hacer un sello de las tuberías, terminar otros programas (para que no se creen más clones) y borrar el clon.


Por último, podemos añadir un disfraz al marco para que salga un mensaje, "Game Over", que parpadeé unos segundos antes de fijarse.


En el objeto fondo, para que se vean los sellos que dejamos al finalizar, podemos borrar el clon. Y para que el fondo no quede blanco, añadimos la misma imagen en el escenario.



Con esto estaría terminado nuestro juego Flappy Brid.

Lo podéis ver dentro del proyecto: Flappy Brid en Scratch.
viernes, 12 de junio de 2015

Cerrando actividades


Termina el curso, pero os animamos a seguir scratcharreando en estas vacaciones de verano. Os dejo unos enlaces donde podéis encontrar muchos recursos e información (están debajo de las entradas del blog, en la sección enlaces).
Para despedirnos os dejo un proyecto que hice hace tiempo para el CFIE y un vídeo para subir los ánimos. Quizá siga escribiendo alguna entrada más en este blog que nos ha servido para hacer la memoria del seminario...ya veremos. Un saludo a todos!






¡Feliz Verano!...y no dejéis de scratcharrear!!
viernes, 13 de febrero de 2015

Cuéntame un cuento


Hoy cambiamos de actividad para ver una de las ventajas que tiene Scratch: contar una historia, poner voz a un personaje, hacer de narrador, dibujar escenarios y dar rienda suelta a la creatividad de los alumnos, que es mucha. Este tipo de proyecto puede trabajar todo tipo de contenidos, hoy hemos hecho un cuento que trata uno de los temas transversales que tenemos dentro del currículo, el medioambiente y los recursos naturales. Además de ver, oír e interactuar con sus propias creaciones, muchos de los cuentos dan pie a un intenso debate que puede surgir en el aula. También podríamos proponer a los alumnos que a través de Scratch explicaran un determinado tema, problema, algoritmo, proceso... y aquí no vale el tan utilizado "copia pega" del que hacen uso muchos alumnos en sus trabajos de aula.

Por otro lado, este tipo de proyectos es ideal para el trabajo cooperativo donde dentro de cada equipo hay distintos roles: guionista, ilustrador, iluminador, música y sonido, director, narrador...Incluso podemos plantear nosotros el comienzo de la historia y dejar que cada grupo realice un desenlace diferente haciendo un remix del original, añadiendo escenas que terminen la historia.

La programación es sencilla, quizá la complicación en este tipo de proyectos es más de organización y ordenación audiovisual, más parecido a la creación de un comic, o a la grabación de una película. Pero vamos con ello. Primero hemos visto el producto final. El cuento es original de Isabel Hernández de la Fuente, que ha tenido la amabilidad de prestarme su voz. Los fondos están sacados de la aplicación para crear comics, Comic Maker, de la que hemos hablado en nuestra web aloestedigital.



Enlace al proyecto: El Duende Rodolfo.

No hemos tenido tiempo de terminarlo, pero hemos visto los suficiente para saber continuar. De todas formas muchas escenas en las que he optado por utilizar el lápiz para que pesara menos, se podrían haber programado de diferente manera. He añadido alguna escena donde el usuario pueda interactuar de alguna manera en la historia. Estas escenas interactivas podemos utilizarlas para comprobar que han entendido algo, que saben distinguir un determinado objeto o personaje, incluso podríamos plantear algún problema de cálculo, o dar la opción de escoger diversos caminos de una misma historia que lleven a diferentes desenlaces, o simplemente parar la narración para llamar la atención y que el usuario de una respuesta para continuar.

Partimos del proyecto con todos los audios de la narración y los diferentes fondos en el escenario, y los disfraces de los diferentes personajes pero sin la programación que vamos a ir construyendo.
Descarga del texto.
Descarga de personajes, audios y fondos.

La opción del formato vector (.svg) es la mejor cuando vamos a cambiar tamaños a los personajes para obtener una visión más cercana o más lejana.

Empezamos en el escenario. Iniciamos el programa con la bandera verde y elegimos el primer fondo y el primer audio.


Es importante elegir la opción "tocar sonido _____ y esperar" porque si elegimos la opción "tocar sonido ____" sin esperar, los audios se van solapando y oyendo al mismo tiempo. De esta forma no empezará el siguiente hasta que no acabe el anterior.

Vamos ahora al personaje del duende e iniciamos el programa con la bandera verde, elegimos el disfraz y le damos algo de movimiento, las animaciones como ya sabéis se realizan cambiando de disfraz y esperando, dependiendo del tiempo que elijáis serán más rápidas o más lentas. Hemos añadido un sonido de silbido al duende.


Aquí termina la primera escena. Volvemos a la programación del escenario, que va a ser el "director de orquesta", avisando a los diferentes objetos para que aparezcan o desaparezcan del escenario. Utilizamos el código "mandar aviso" y continuamos con los audios.


En la escena 2, el duende desaparece del escenario y cambiamos el fondo. Los fondos podemos cambiarlos desde el escenario o bien desde los objetos. En este caso cambiamos el escenario desde el objeto duende y añadimos un sonido del ruido del bosque. Ajustamos los cambios de fondos al audio de la narración.


En la siguiente escena, el duende Rodolfo va a ir caminando hacia un río que muestra la ilustración del fondo. Para animar al duende utilizamos los disfraces pero vamos a ir cambiando de tamaño y ajustando también las coordenadas x e y (si es necesario) para que nuestro personaje acabe en el centro del escenario y dar la sensación de profundidad.




En la siguiente escena, la escena 3, paramos la narración para interactuar con el usuario. El duende se coloca en la esquina y cambia el fondo.



Y en el personaje "objetos" donde tenemos los disfraces de las hierbas, las setas y las frambuesas iniciamos el programa con la bandera verde para esconder y al recibir escena 3 aparecer.



Además vamos a clonar varias veces el personaje con diferentes disfraces y a colocarlos por el escenario. Utilizamos un audio, que está subido en "objetos" para explicar al usuario que recoja estos objetos con el ratón. Aquí vamos a crear una variable para guardar el número de clones que hemos hecho e ir restando cada vez que el ratón toque a uno de ellos (el clon se borrará), de esta forma cuando esta variable sea cero podemos continuar con el relato y cambiar de escena.


Si os fijáis, el objeto original sigue escondido y los que aparecen son los clones. Para ir colocándolos en el escenario antes de fijar esas coordenadas a los clones, podemos utilizar el sello del lápiz e ir mirando dónde quedan mejor, y recogiendo esas coordenadas del panel de movimiento.
Mejor os dejo grabado un vídeo para que lo veáis.

En la siguiente escena, la escena 4, el duende vuelve a andar de espaldas al bosque, esto ya sabemos cómo hacerlo, pero añadimos un detalle, está oscureciendo. Esto lo podemos hacer cambiando el efecto brillantez del escenario. La brillantez de todas las imágenes que subimos a Scratch tienen por defecto 0. Si aumentamos y llegamos a 100 sería blanco y si disminuimos y llegamos a -100 sería negro totalmente. Para dar un efecto de anochecer utilizamos un bucle repetir.



Tenemos que ir al escenario y empezar un nuevo script que comience "Al recibir escena4". He utilizado dos que correrán simultáneamente, uno para que comience el audio y otro para que oscurezca el fondo y se oiga el ruido de la sierra y el árbol cayendo.


Ahora tenemos que ir a la programación del personaje del duende para que aparezca en escena y realice la animación.



La siguiente animación, la escena 5, comienza cuando acaba el audio de la narración y empieza el siguiente, que lanza el escenario. En esta escena nuestro duende mueve la boca para hablar. Utilizamos los disfraces hablando uno y hablando dos y ajustamos el tiempo al audio.


Cuando acaba este audio, el escenario lanza la siguiente escena, la escena 6 donde he decidido hacer otra parada interactiva. Por eso escondo al duende al terminar de hablar.




Voy al personaje búho e inicio la programación con la bandera verde, escondiendo al personaje para que al recibir escena 6 aparezca. En esta ocasión y para no cargar de peso al proyecto, no voy a utilizar clones. Utilizo sellos para el resto de disfraces y no llevarán ninguna animación. Utilizo un audio para preguntar al usuario a cuál de estos animales ha llamado el duende.



Al hacer clic con el ratón en el búho es cuando seguimos con la siguiente escena animada. Hacemos volar al búho y tocamos el sonido del búho. Aquí queremos que aparezca el duende en las garras del búho para "ver" cómo lo lleva hasta su casita. Para resolver el problema de sincronización de movimientos y aparición de los dos personajes y hacerlo mucho más sencillo, utilizo otro disfraz para el búho con la imagen del duende y simplemente cambio de disfraz. También desde este personaje voy cambiando los fondos.


Cuando llega al fondo de la casita del duende, entonces cambio de disfraz al búho y ahora sí, aviso al duende para que aparezca en las mismas coordenadas, escena 7, y alejo al búho hasta esconderlo. Cómo veis, el envío de escenas no siempre se hacen desde el escenario. En este caso es el búho el que envía escena igual que antes eran los objetos (setas, frambuesas y hierbas) los que enviaban la siguiente escena.

En el personaje del duende, realizo la animación y lo escondo.


En el escenario sigo con los audios. Creamos un script simultaneo para que amanezca volviendo a cambiar la brillantez del escenario y añadiendo los sonidos de la motosierra y el árbol cayendo.


En el siguiente audio, la escena 8, donde el narrador va explicando cómo se destruye el bosque, he decidido que mejor lo imagine el oyente mientras vemos al duende mirar por su ventana. Para eso he creado otro objeto ventana, he copiado parte del fondo de la casita del duende y he borrado la ventana en el editor de Scratch, de esta manera al colocar la ventana delante del duende (aquí jugamos con la ordenación de objetos en capas), veremos al duende cómo mira por la ventana.


Y cómo hemos hecho con los otros personajes, iniciamos la ventana con la bandera verde escondiendo para que aparezca al recibir escena 8.



También hacemos aparecer al duende y lo aumentamos poco a poco de tamaño para que parezca que se está acercando a la ventana a mirar.


El resto de la programación creo que podéis ir construyéndola, porque no tiene más complicación que el ajuste de tiempos con el audio. Este problema no sería tal si yo hubiera diseñado los escenarios para grabar después la narración en cada escenario, pero el proceso ha sido el inverso porque yo he partido de los audios que me ha prestado Isabel, con lo cuál la construcción es más complicada que si lo hacemos al revés, cosa que os animo a probar.

En la última parte del cuento he vuelto a utilizar un efecto, en este caso el efecto desvanecer para hacer desvanecerse al duende y convertirse en nube.

Os dejo el proyecto a medias, Cuéntame un cuento,  que he vuelto ha realizar para esta entrada, con alguna variación frente al primero, seguro que no coinciden coordenadas, ni tamaños, y también he quitado la cesta como objeto porque era mejor pintarla directamente en el fondo del escenario.



La intención es que realicéis otro final diferente. A ver quién se anima y le echa imaginación!!

jueves, 15 de enero de 2015

Puzzle interactivo


En esta sesión hemos aprendido a importar dibujos vectoriales dentro de Scratch y modificarlos dentro del editor en modo vectorial. Hay muchos sitios donde podemos descargar imágenes vectoriales de dominio público o con licencias CC, que podemos utilizar en nuestros proyectos, pero uno de los sitios donde vais a encontrar más es en wikimedia commons, donde se alojan la mayoría de las ilustraciones que aparecen en los artículos de wikipedia. Otra opción es buscar en Google imágenes, pero haciendo una búsqueda avanzada para elegir el formato .svg, que es el formato vectorial que reconoce Scratch. Otra buena página donde buscar es en freepik, si descargáis la forma vectorial, es posible que el formato no sea svg, pues en muchos casos será formato de Adobe Illustrator (.ai), y si no tenemos este programa lo mejor es tener instalado en nuestro ordenador el programa libre Inkspace, con el que sí podemos abrir el formato .ai y guardar en .svg para poder importarlo a Scratch. De esa manera podremos hacer cambios en los dibujos mucho más fácilmente o redimensionarlos sin perder ningún detalle. Por ejemplo este archivo de animales:



El formato es en .ai, pero al abrirlo con Inkspace podemos guardarlo en .svg, y así poder importarlo a Scratch sin problemas, de manera que en pocos minutos tenemos toda una biblioteca de personajes para nuestros proyectos o el de los alumnos. Ejemplo. Eso sí, siempre mencionar en la ventana del proyecto la referencia al autor, o la fuente, si es licencia CC-By



Proponemos en esta sesión realizar una aplicación interactiva que consistirá en ir colocando las diferentes Comunidades Autónomas en el mapa de España. Para eso hemos importado un nuevo objeto en Scratch, este mapa, y hemos duplicado disfraces hasta obtener 17 copias. En cada disfraz hemos desagrupado el mapa hasta poder borrar fácilmente todas las comunidades salvo una de ellas en cada disfraz. Nombramos cada disfraz con el nombre respectivo de la Comunidad y creamos una lista donde guardamos todos los nombres.


Colocamos un objeto mapa, en blanco, que nos sirva de referencia y vamos situando cada comunidad en su sitio, teniendo en cuenta que al modificar el mapa, hemos cambiado el centro (punto de referencia donde se coloca el objeto en el escenario) en el centro de cada disfraz. Al situar cada disfraz en su sitio guardamos estas coordenadas en dos listas, una para las coordenadas X y otra para las coordenadas Y, en el mismo orden que la lista de nombres. Ver vídeo
Ahora creamos otras tres listas (vacías) que nos servirán de listas auxiliares para ir borrando las comunidades que vamos colocando. Este es el punto de partida para el programa que vamos a realizar.


Antes de empezar, tenemos que tener claro el funcionamiento de la aplicación. Para eso lo mejor es jugar nosotros mismos y ver cómo funciona. Elegid la opción situar, la otra opción la veremos en la próxima sesión. Cuando el ratón toque el dibujo de la comunidad, no hagáis clic con el ratón hasta haber movido al sitio que le corresponde. Proyecto en Scratch.


Ahora que ya tenemos claro cómo funciona el juego vamos a programarlo. Primero iniciamos las variables y borramos el escenario.

Ahora hacemos una copia de las tres listas, nombres y coordenadas en las listas auxiliares; para ello utilizamos un bloque que repetimos 17 veces, copiando cada elemento de cada lista.


El siguiente paso es elegir de manera aleatoria un elemento de la lista, guardar este nombre en una variable que llamaremos comunidad, cambiar el disfraz a comunidad ( los nombres de los disfraces deben ser idénticos a los nombres de la lista (distinguiendo mayúsculas y tildes). Ir a un punto inicial del escenario y esperar a que toque el ratón.

Cuando toque el ratón, haremos que el dibujo siga continuamente al ratón ( con esto conseguimos arrastrar el dibujo), hasta que hagamos clic con el ratón. En ese momento, el objeto tendrá una posición que recogen las dos variables de posición y que tendremos que comparar con las coordenadas que tenemos guardadas en las listas de coordenadas, para comprobar si está en el sitio correcto.

Para comparar ambos números, utilizamos una resta pero tomando el valor absoluto para que siempre salga positivo, y si es menor que 5 ( por ejemplo, está muy próximo al punto exacto) entonces sellamos el disfraz y volvemos a empezar con otro elemento al azar, pero antes borramos ese elemento que ya hemos colocado de las tres listas ( la de nombres y las dos de coordenadas), de esa manera iremos restando un elemento hasta completar el mapa y borrar todos los elementos de las listas auxiliares. En caso de que la posición del dibujo no coincida con la que tenemos guardada, entonces volvemos al inicio, sin borrar nada.


Estos tres bloques los unimos todos dentro del bloque: repetir hasta que la longitud de la lista CCA sea menor que 1. Y ya tenemos el programa terminado. Escondemos el objeto y podemos añadir una música de triunfo para concluir.


También podemos grabar nuestra voz nombrando cada comunidad y añadir tocar sonido cada vez que mostremos un nuevo disfraz, bastaría nombrar cada sonido con el mismo nombre de la lista de nombres y nos valdría la misma variable comunidad, como podéis comprobar en el proyecto final.

Este tipo de programa puede serviros para muchos puzzles con diversas temáticas: partes de una planta, huesos del cuerpo humano...
jueves, 27 de noviembre de 2014

Seguimos pintando


En esta sesión nos planteamos continuar con la herramienta lápiz. El proyecto consiste en crear un lápiz que el usuario pueda manejar libremente y dibujar lo que quiera.
Como siempre creamos un nuevo proyecto y borramos al gato de Scratch que aparece por defecto, nos situamos en el objeto y con el botón derecho del ratón accedemos al menú donde podemos borrar. Añadimos un nuevo objeto de la biblioteca de Scratch, buscamos el lápiz y lo añadimos a nuestro proyecto. Este será nuestro protagonista de hoy.


Queremos que el usuario pueda pintar con este objeto en cualquier punto del escenario utilizando el ratón, por tanto el primer paso que damos es decirle al lápiz que siga al cursor por siempre.


Al probar el programa observamos que el lápiz sigue al cursor pero no como queremos...hay que modificar el centro del objeto para que sea la punta del lápiz. Mirar vídeo.
Dentro de la pestaña disfraces, en el editor de dibujo hacemos clic en el botón superior derecho y clic en la punta del lápiz para que sea este el centro del objeto.

El centro del objeto es muy importante pues cuando movemos el objeto al punto (x,y) es el centro del objeto el que se coloca en ese punto. También es muy importante en los giros que hacemos al objeto, pues es el centro del giro.
Ahora queremos que pinte cuando hagamos clic en el ratón, para ello deberemos utilizar un bloque de la categoría sensores: ¿ratón presionado?. Si el ratón está presionado bajamos lápiz y si no lo subimos para que deje de pintar cuando dejemos de presionar el ratón. Probamos este código.


Perfecto, ya podemos pintar. ¿Y si queremos borrar?...utilizamos el teclado, por ejemplo que sea la tecla espacio la que borre todo el escenario.


Ahora queremos que nuestro lápiz pueda cambiar de color, vamos a elegir diferentes colores y diferentes teclas que serán las que cambien el color del lápiz; pero antes veamos cuántos colores tiene Scratch y qué número corresponde a cada color. En la wiki de ayuda podéis buscar la información sobre todo lo referente al color.
Hay dos formas de asignar color al lápiz ( al objeto, puede ser cualquier objeto, aunque nosotros hemos elegido un lápiz, podría ser cualquier personaje diferente que hubiéramos elegido).
Una forma es con el número, desde el 0 que es el rojo al 200 que vuelve a ser rojo tenemos toda una gama de colores. Para verlos todos vamos a construir un bucle, (luego lo borramos de nuestro programa)


Este es el resultado


Si numeramos empezando por el 0, 1, 2,...,19 que corresponden a la primera fila de colores, la siguiente 20, 21, 22,...,39, la tercera fila son los colores correspondientes a 40, 41, 42,...,59, y así sucesivamente hasta la última 180,181,182,...199.

Además, cada uno de estos colores tiene diferentes intensidades, bueno, yo diría diferentes claridades, pues podemos combinar más o menos con el negro y el blanco, para oscurecer o aclarar cada color. En este caso la intensidad puede ir desde 0 (oscuro) hasta el 100 (claro)
Lo vemos con otro bucle para el color rojo, por ejemplo:


Y este es el resultado:


Por defecto las intensidades están al 50. 
Vamos a elegir para nuestro lápiz cuatro colores básicos y cuatro letras del teclado para cada uno:
  • letra a, azul, número 130
  • letra v, verde, número 70
  • letra r, rojo, número 0
  • letra m, amarillo, número 35
Podéis añadir más colores a vuestros lápices, o incluso diferentes claridades, la programación es la misma cambiando color por intensidad.

La otra forma de asignar un color al lápiz, muy útil cuando tenemos un objeto con un color que queremos copiar exactamente, y es con el bloque donde aparece un cuadradito de color:


Hacemos clic en el cuadradito para activar la copia de color y llevamos el cursor ( que ha cambiado su forma a un dedo) encima del color que queremos copiar (puede ser otro objeto o cualquier color de la pantalla). Mirar el vídeo y como va cambiando el color del cuadradito.

Bueno, volvemos a nuestro proyecto y programamos cada tecla para que el lápiz cambie al color elegido.




Probamos nuestro progama, no os olvidéis volver a poner la intensidad al 50, si la habéis modificado..., funciona! ahora nuestro lápiz cambia de color si tocamos alguna de estas letras del teclado. ¿Qué más podemos modificar de nuestro maravilloso lápiz?...El trazo! podemos elegir un trazo más grueso. Elegimos otras dos teclas para aumentar o disminuir el trazo del lápiz, por ejemplo la t para aumentar y la p para hacerlo más pequeño. 


Perfecto! 
Ahora nos gustaría tener una goma, pero que solo borrara algún trazo y no todo el dibujo del escenario...mmm ¿cómo lo hacemos?. Marta nos da la respuesta: pintar de blanco!! 

Para dar más realismo a nuestra goma, que en realidad es el mismo lápiz pintando del mismo color que tenemos de fondo, vamos a darle la vuelta al objeto y utilizar la goma que viene dibujada en nuestro lápiz. Hay varias maneras de hacer esto, girando el lápiz y desplazando el objeto hasta el cursor, pero quizá es más sencillo si lo que hacemos es cambiar de disfraz. Vamos a la pestaña disfraces y duplicamos el disfraz del lápiz, utilizando los botones de esquina superior derecha damos la vuelta a nuestro objeto y centramos el centro en la goma. Ver Vídeo

Elegimos la letra g, que será la que convierta nuestro lápiz en una goma. Y para volver al lápiz elegimos la letra l.



Al probar el programa tenemos un problema que solucionar: No sabemos con qué color estábamos pintando en el momento de cambiar a goma, y al volver al lápiz hemos puesto rojo, pero si estábamos pintando con azul!
¿Cómo resolvemos este problema? Con variables!!
Vamos a crear una variable, que llamaremos color que guarde el color con el que nuestro objeto dibuja. Iniciamos el programa con un color, por ejemplo azul, 130, y modificamos en cada letra.
Ahora la goma es perfecta!






Nuestro proyecto mola!

Pero, como yo soy de mates, no puedo evitar añadir unos clones para convertir nuestro maravilloso lápiz en una máquina de crear mandalas, o mejor, en un laboratorio de investigación...de giros y simetrías. Para lo cual creo otras dos variables: giros y simetrías, y utilizo las teclas de las flechas para aumentar o disminuir los giros y para activar o desactivar las simetrías axiales. Creo otros dos objetos lápices que oculto y que serán los que dibujen las simetrías y los giros respectivamente.

Añado cuatro programas más a nuestro lápiz, inicio el giro a 1 y las simetrías a no, si el usuario toca la flecha de la derecha aumento el giro en una unidad y aviso al objeto lápiz-giro para que se clone tantas veces como números de giro guarde la variable y pinte esos giros. Si el usuario toca la flecha arriba activará las simetrías y si toca flecha abajo las desactivará.

Las ecuaciones que transforman un punto (x,y) del plano en otro punto girado un ángulo A respecto del origen son las siguientes: (x*cosA-y*senA, x*senA+ycosA) y las ecuaciones de la simetría respecto de una recta que pasa por el origen y forma un ángulo A con el eje horizontal son : (x*cos2A+ysen2A, xsen2A-ycos2A).

Bueno, veamos el código que añadimos en nuestro lápiz:



Cuando utilizas el código "crear clon de este objeto", se crea un objeto igual con el mismo comportamiento que el original, puedes cambiar cada clon si distingues su creación con un contador, yo he utilizado una variable llamada i para contar los clones que creo y después generar el dibujo dependiendo de esta i que será la que multiplique el ángulo (360/número de giros). Ahora bien, el número de clones que puedes crear es limitado, dependiendo del espacio de memoria que ocupen y si haces muchos el programa no funcionará, por tanto no puedes crear clones de clones pues se dispararía el número, por eso antes de crear clones borro todos los que hubiera, de ahí enviar message1 y esperar. 
Este es el código del lápiz-giro:



Como no cabe todo el código del movimiento, podéis echar un ojo dentro del programa y ver lo que no cabe en esta imagen:


He creado también una variable que es uno cuando el lápiz es una goma y cero cuando no lo es, porque no sé que código numérico tiene el color blanco y así lo he solucionado añadiendo un condicional.

Puede que esta parte de los clones sea algo avanzado para principiantes, pero no he podido resistirme, espero que vuestros alumnos usen este proyecto para hacer un montón de mandalas matemáticos y que me enviéis un montón de capturas de pantalla!!



Licencia CC BY-NC-SA. Con la tecnología de Blogger.

Mi twiter