Cuando empiece el programa, queremos que el fondo sea el de la casa. En el escenario agregamos el código: al presionar bandera verde, cambiar el fondo a fondo casa. Esto mismo se podría haber hecho desde el programa del personaje, fijando el fondo directamente. Muchas veces, como vimos en éste y en otros casos, hay más de una forma posible de hacer las cosas. Mmmm... esta idea de que puede haber más de una forma de resolver un problema me hace pensar en la complejidad computacional de un algoritmo. Sí, esta frase que suena como muy difícil, es de un concepto fácil de comprender. Supongamos que tenemos varios algoritmos para resolver un mismo problema, por ejemplo, queremos ir de una ciudad a otra y podemos tener varios algoritmos: uno para ir en auto, otro para ir en avión y otro más para ir en bus. ¿Cuál elegimos? A partir de evaluar elementos tales como el tiempo que demora o los recursos que usa cada uno, podemos compararlos para elegir aquel que convenga más según la situación particular. Esta idea es similar a cuando tenemos diferentes algoritmos para un mismo problema en computación. Debemos considerar el tiempo y los recursos necesarios para elegir el más conveniente según el caso particular. Volvamos al juego. Cuando diseñamos el programa para el escenario, especificamos que cuando el juego termine, se debe cambiar al fondo determinado y detener todos los programas. Esta es la reacción o comportamiento del escenario cuando recibe el mensaje de terminar el juego. ¿Cómo lo implementamos? Agregamos el bloque al recibir terminar juego, que está en la paleta de eventos y especificamos que cambie el fondo y detenga todos los programas. Aunque aún no hemos implementado el comportamiento de las flores, o sea, no las consideraremos por ahora, podemos probar nuestro programa para las demás partes que ya hemos implementado. Vamos a probar. Bien, las instrucciones aparecieron, la escoba permite alejar los zombies, se actualiza el puntaje. Veamos qué pasa cuando llega el zombie a la casa. Bien, termina el juego pero, ¿por qué sigo viendo la escoba en el escenario? En el programa actual no hay nada que le avise a la escoba que debe esconderse cuando termina el juego. ¿Cómo lo solucionamos? En el personaje que tiene el disfraz de escoba usamos el bloque al recibir y elegimos el mensaje terminar juego. Agregamos el bloque esconder. Bien, ahora probemos nuevamente nuestro programa con esta corrección. Bien, va funcionando. Juguemos otro partido. Ups, el personaje no se ve ahora. Al hacer nuestra prueba detectamos otro error, falta mostrar el objeto nuevamente al comienzo. Agregamos en el personaje en el inicio, el bloque mostrar. Vamos a probar nuevamente, Ahora sí se ve la escoba. Lo dejamos que llegue al final, ejecutamos nuevamente, está funcionando correctamente. Solucionado. Observa que aquí hemos aplicado otras etapas del proceso de desarrollo del software: la prueba y la depuración. Ahora programamos el comportamiento de la flor según nuestro diseño. Ponemos la bandera verde y el bloque repetir con cantidad al azar de flores, entre 3 y 10. El proceso a repetir será crear un clon de este objeto. Finalmente, y como vimos, lo escondemos porque trabajaremos con los clones. Veamos el comportamiento cuando empiece como clon según nuestro seudocódigo. Cuando empiece como clon, la posicionamos en un lugar al azar del escenario, con x e y con valores por ejemplo entre -150 y 150. La mostramos y repetimos el baile de la flor hasta que toque el zombie. El baile se puede programar alternando el disfraz y esperando 0.3 segundos. Después que la toque borramos el clon. Vamos a ejecutar. Bien, va funcionando. Un detalle que podemos mejorar es que las flores podrían tocarse y quedaría más lindo que no lo hagan. Para evitar que se toquen, cada vez que ubicamos una chequeamos que no esté tocando el color naranja de los pétalos y que tampoco esté tocando el color verde oscuro del tallo. Si llega a estar tocando, la volvemos a ubicar y verificamos nuevamente. Luego del bloque mostrar agregamos un bloque repetir hasta que con una condición doble: que no esté tocando el color verde y que no esté tocando el color naranja de la flor. Armamos la condición compuesta. Primero colocamos el bloque y, y luego un bloque no con la condición de tocando el color verde. En la otra parte, otro bloque no con la condición de tocando el color naranja. Si observas con cuidado, se ve claramente la condición compuesta por los diferentes niveles de los bloques, uno encastrado dentro de otro. Agregamos el bloque repetir hasta que con la condición compuesta que armamos. Agregamos dentro el bloque ir a con posiciones al azar de x e y entre -150 y 150. También ponemos un comentario para aclarar esta parte del código. Probamos nuevamente varias veces. Bien, hagamos una pausa. Pensemos un minuto acerca del proceso. El desarrollo del software lo estamos haciendo, en general, en forma iterativa e incremental. Cada nueva versión incluye más cosas. Hemos hablado de otros enfoques que se aplican en la vida profesional como la cascada. Otro enfoque es el de prototipar. Un prototipo es un modelo del producto final y nos permite hacer pruebas sobre ciertas características sin necesidad de tener todo el producto completo. Por ejemplo, si pensamos en diseño industrial, un prototipo de una silla podría ser un modelo en 3D, en tres dimensiones de unos 20 centímetros de altura. Nos permite visualizar cómo quedaría la silla, imaginarnos cómo se vería terminada sin tener que esperar a crearla. Nos permite además hacer ajustes y correcciones de diseño antes de construirla efectivamente, lo cual es ciertamente que tener que hacerlos luego que ya está hecha. Por ejemplo, en este caso podríamos haber creado un nuevo proyecto, poner ahí solamente el código de las flores de su ubicación y probarlo. Luego que tenemos esto resuelto, lo incluimos en el proyecto original. Nuestro caso, como dijimos, usamos el enfoque incremental. Seguimos probando un poco más. Mirando con atención se observa que la escoba queda como por detrás de las flores. ¿Podemos solucionarlo? Sí. Para ello podemos agregar en el inicio de la escoba, luego del mostrar, el bloque enviar al frente que la ubica delante de todos los demás. Probemos. Bien, la escoba queda delante de las flores. Tenemos lista una versión inicial, básica del juego. Vamos a probar también el desplazamiento de la barra. Bien, durante la especificación de requerimientos, hablamos de que los zombies, cada tanto, vengan en grupos grandes, que funciona como efecto sorpresa en nuestro juego. En el próximo video extenderemos esta versión y le agregaremos la invasión zombie.