El proyecto Scratch de los viernes (XIII): Space Invaders

7
Space Invaders en Scratch

Quién no ha jugado alguna vez en su vida a Space Invaders, uno de los grandes clásicos de los videojuegos de los 80. Esas naves espaciales, esos marcianitos, esos movimientos… son reconocidos por cualquiera con una mínima experiencia en este mundillo. Pues resulta que podemos crear un divertido de Space Invaders en Scratch, y de forma muy fácil.

Volvemos a la carga con un nuevo proyecto Scratch de los Viernes en el que te contaremos cómo empezar a enfocar el proyecto. Qué objetos necesitas, cómo han de moverse e interaccionar, así como por supuesto una serie de consejos para continuar evolucionando el proyecto. ¿Un Space Invaders en Scratch? Veamos cómo.

¿Cómo era Space Invaders?

Antes de comenzar, un vídeo recordatorio de cómo era Space Invaders que nos recordará y ayudará a traerlo a Scratch:

https://www.youtube.com/watch?v=437Ld_rKM2s

Y ahora sí, comencemos.

Primero, la nave

El elemento clave de Space Invaders es la nave, que se mueve en horizontal y siempre está situada en la parte inferior. Tan sencillo como buscar o crear nuestra propia imagen de la nave, llevarla a las respectivas coordenadas (que por ejemplo, al pulsar la bandera verde se coloque) y ya está.

Space Invaders en Scratch

Space Invaders en ScratchSi queremos mover la nave con las teclas de flechas de dirección, pues vamos a ello. Al presionar tecla flecha izquierda, cambiar la coordenada X por el valor que queramos; ídem con la tecla flecha derecha.

Pero la nave por si misma no es nada. Es necesario crear una bala con la que disparar a las naves enemigas, que puede ser perfectamente un rectángulo blanco. Es un nuevo objeto con una acción: cuando presionemos una determinada tecla —por ejemplo, espacio— irá a donde esté la nave, apuntará hacia arriba y se moverá hasta que toque el borde. Listo.

Segundo, los enemigos

Para crear las naves enemigas del Space Invaders en Scratch podemos recordar lo que hicimos con el proyecto de Arkanoid, de hace unas semanas: utilizar clones es más complejo, pero lleva a resultados más potentes; si no te atreves, simplemente crea un puñado de objetos que tengan el disfraz del enemigo (échale un vistazo a Google, porque hay GIFs que facilitan la labor).

Lo principal es la posición en la que aparecerán los enemigos. Prueba por ejemplo a colocarlos en fila, uno junto al otro. ¿Cómo? Tan sencillo como que su coordenada y sea la misma, mientras que la x variará según el tamaño de tu objeto. Prueba diferentes posiciones hasta que consigas las agrupaciones que deseas.

Space Invaders en Scratch

Una vez la tengas, tus enemigos tendrán que interactuar con la bala: si tocan la bala, desaparecerán —o el clon será eliminado—, ¿adivinas cómo? Pistas: habrá que comprobar… por siempre, si el enemigo está tocando la bala. Cuando la toque, que se esconda. Fácil, ¿no? Una vez más, recuerda que hay otras muchas soluciones a esta problemática.

Hasta el infinito… y más allá

Ésta es sólo una breve introducción al Space Invaders, que como siempre os planteamos como proyecto base sobre el que continuar mejorando. Cuidado, porque engancha y te puedes tirar media tarde programando… y la otra media, jugando. A continuación unas cuantas mejoras que puedes añadir.

  • El Space Invaders original tiene unos muros de defensa que separan nuestra nave de las enemigas. Prueba a añadirlos y que si los disparas, se vayan desgastando.
  • Falta un elemento clave: que los enemigos disparen. ¿Cómo hacerlo? Si lo has hecho con clones lo tienes algo difícil (por aquí unas pistas); si tienes objetos independientes será más fácil. Piensa en cómo dispara nuestra nave, y por ahí van los tiros.
  • Space Invaders GIF¿Qué ocurre cuando destruimos todas las naves enemigas? Ahora mismo, nada. Crea una variable que vaya contabilizando las naves que destruyes, y cuando las tengas todas, manda un mensaje de que te has pasado el nivel…
  • … o mejor aún, añade un segundo nivel en el que las naves vayan más rápido, o disparen más. Y un tercero, y un cuarto, y…
  • También falta una nave enemiga que espontáneamente aparecía en la parte superior. Créala de forma que se comporte como en el juego original.
  • Y lo más importante, sé creativo: añade sonidos, parte clave en este juego. También puedes poner distintos colores, muñecos, formas, movimientos… ¡lo que quieras!

El proyecto Scratch de los viernes es la sección en la que, cada quinto día de la semana, proponemos una idea de proyecto y damos algunas pistas para llevarlo a cabo. Hemos hablado de movimientos, figuras geométricas, historias, juegos de preguntas y respuestas, videojuegos… ¿Quieres saber más? Échale un vistazo a las ideas recopiladas en este enlace o al estudio Educación 3.0 en la comunidad de Scratch donde estamos incluyendo nuestros proyectos de los Viernes. Y por supuesto, ¡cualquier propuesta o sugerencia que tengas será bienvenida!

Pablo EspesoPablo Espeso Tascón es Ingeniero Informático y coordinador del Club de Jóvenes Programadores de la Universidad de Valladolid (CJP @ UVa)

 

Comentarios:

7 Comentarios En "El proyecto Scratch de los viernes (XIII): Space Invaders"

avatar
Ordenar por::   Más nuevo | Más antiguo | Más votado
Profesora Carolina
Profesora Carolina

Hola Pablo.

Quería felicitarte por tu trabajo.

Me llamo Carolina, soy profesora de Tecnología.

profesoracarolinapr.blogspot.com es el blog con el que trabajo en clase con mis alumnos.

El siguiente enlace es de una entrada en la que hice uso de posts tuyos sobre Scratch.

http://profesoracarolinapr.blogspot.com.es/2016/01/programacion-en-scratch-i.html

http://profesoracarolinapr.blogspot.com.es/2016/01/aprendiendo-scratch-i.html

Felicidades por el estupendo trabajo que realizas.

Si no estás de acuerdo con el uso que hice de tu material sólo tienes que decírmelo y lo retiraré.

De igual forma me gustaría compartir mi blog contigo, por si en algún momento te resulta útil.

Un saludo.
Carolina Pérez

revangel
revangel

¡Hola, Pablo!
Estoy atascada con el tema de que los aliens disparen, a ver si me podéis echar una mano. ¿Cómo puedo hacer que un sprite (la bala) se dispare desde otro (el alien) elegido al azar? ¿Con listas? ¿Con variables que guarden la posición de cada alien? Entiendo que creamos una sola bala, no una por cada sprite/clon…
Igual lo estoy mirando desde el lado equivocado y tengo que darle la vuelta.
Estoy trabajando con las dos ideas: aliens como sprites y aliens como clones.
¡Gracias por estos viernes de Scratch!

revangel
revangel

Ya casi lo tengo con sprites. Pregunta que se me ocurre: ¿se pueden crear listas que contengan variables?
¡Gracias!

revangel
revangel

Hola, Pablo. Aquí va lo que he conseguido hasta ahora y con tu ayuda https://scratch.mit.edu/projects/105045120/ Quedan ajustes, sonido, barreras, etc… pero ya se va pareciendo y además ¡parece que funciona! De todos modos, creo que igual se puede hacer con menos código, más eficiente, aunque no se me ocurre cómo. Mil gracias

wpDiscuz