¿Viste alguna vez en un estadio deportivo cuando la multitud hace la ola? Es muy lindo de ver y podemos recrearlo en Scratch. Este ejemplo está adaptado del link que ves en pantalla. En nuestra versión generaremos el efecto moviendo el mouse sobre la tribuna como éste. Necesitaremos una tribuna formada por muchas personas, cada una de las cuales hará sus movimientos con los brazos cuando le toque. Si la tribuna tiene, por ejemplo, cuatro filas de asientos y en cada uno se ubican ocho personas, ¿cómo haremos para crear todos esos objetos? La respuesta está en los clones. La tribuna la generaremos a través de clones de un único objeto persona, lo cual es bastante más eficiente que crear un objeto separado para cada una de ellas. Comenzamos, creamos un nuevo proyecto y agregamos un fondo de estadio También incluimos un personaje similar al de la figura que vimos en la tribuna. Eliminamos el gato y dibujamos el personaje. Convierto a mapa de bits. Lo duplicamos. Ahora analicemos el programa. Identificamos dos partes principales: la creación del público en la tribuna y el comportamiento de la ola. La creación del público a su vez puede ser descompuesta en dos partes: por un lado, la inicialización que implica ubicar la persona en la pantalla y ponerle el disfraz de parado y por otro, completar las gradas que implica clonar nuestra persona y ubicarla en la posición correcta. Vamos a implementar en Scratch la inicialización. El código incluye poner el disfraz elegido y ubicarlo en el extremo superior izquierdo de la tribuna. En nuestro caso es -200 120. Incluimos además el bloque mostrar que nos será útil para ir viendo los distintos clones que se crearán. Ahora completemos las gradas. Pensemos el seudocódigo y luego lo pasamos a Scratch. Queremos que haya cuatro filas con ocho personas en cada una. ¿Cómo logramos esto? Usaremos la idea de los ciclos anidados que aprendimos en una unidad previa. El primero es para cada fila y el segundo es para cada ubicación dentro de la fila. En cada posición creamos un clon y actualizamos la posición en x desplazando, por ejemplo, 40 pasos. Cuando cambiamos de fila modificamos el valor de y y actualizamos x para que quede a la izquierda de la nueva fila. Vamos a implementar esta parte. De acuerdo con nuestro seudocódigo usaremos dos bloques repetir. Dentro de este último bloque repetir pondremos el bloque de crear clon y luego el bloque de cambiar la x. Al terminar este bucle o ciclo cambiamos la y y actualizamos la x. Cambiamos la y por -40, fijamos la x a -200. Finalmente escondemos el objeto como hicimos en los ejemplos previos. El comportamiento de ola puede ser logrado programando el comportamiento de cada clon. Este comportamiento será por siempre, verificar si está siendo tocado por el ratón y en ese caso levantar los brazos hasta arriba. Para este movimiento podemos usar la secuencia de disfraces que creamos. Ahora programamos este comportamiento, incluimos el bloque cuando comience como clon. El comportamiento de cada clon será por siempre, verificar con un bloque si si está siendo tocado por el ratón. En ese caso hace la secuencia de disfraces para simular la ola. En este caso como son cuatro disfraces en total, lo repite cuatro veces esperando un breve tiempo entre cada cambio. Vamos a probarlo. Sí, logramos nuestra ola. Puedes extender este ejemplo incluyéndole sonidos u otros efectos gráficos cada vez que la persona hace la ola. En los ejemplos que trabajamos en esta unidad vimos formas más avanzadas de escribir código. Por ejemplo, a través de definir nuestros propios bloques que representan secuencias de instrucciones y el uso de los parámetros podemos generar nuevos elementos para usar en nuestros programas. También vimos otro elemento interesante que es la clonación. Al clonar un objeto podemos generar la cantidad que necesitemos de objetos similares, lo que nos permite fácilmente hacer juegos divertidos como romper burbujas con las manos o cazar fantasmas. En nuestra última unidad integraremos todo lo visto en el curso en un último desafío muy completo e interesante. Nos vemos.