Tutorial Arkasanoid

¿Conoces el Arkanoid? Seguro que sí. Junto con el Pong debe ser el juego más clonado de la historia. Y esto es lo que vamos a ver hoy, vamos a programar un clon de Arkanoid al que llamaremos #YoMeQuedoEnArkasanoid

Si le quieres echar un vistazo, para ver qué es lo que vamos a hacer, aquí tienes la página del proyecto. Como verás es la base del juego: no hay pantalla de presentación, no hay pantalla de Game Over, no hay puntuación, tiempo, ... Eso te lo dejo a tí. ¿Porqué? Por que repetir lo mismo es muy aburrido, lo interesante es darle tu toque personal.

Vayamos al lío.

Lo primero es, evidentemente, entrar en Scratch. Doy por hecho que tienes cuenta. ¿No? Venga, te esperamos un minuto mientras te la creas aquí.

Vale, ya estamos. Lo primero que vamos a hacer es pulsar en "Crear", arriba junto al logo de Scratch. Ya tenemos nuestro editor delante y el gatete ahí, esperando impertérrito a ver qué le decimos. Le diremos que se vaya, pulsando en el icono de papelera junto a la miniatura del objeto.

Con la ventana completamente vacía vamos a pulsar en "Elegir Objeto" y vamos a poner los únicos tres elementos que tiene este clon básico de Arkanoid: Paddle, Ball y Button2. Lo pongo en inglés porque es el nombre con el que os aparecerán. Podéis poner los tres ya o ir haciéndolo sobre la marcha, eso lo dejo a vuestra elección. Yo prefiero hacerlo todo a la vez y así tener más claro cómo van a interactuar.

Situamos la pala y la variable PosX
Comenzamos con la pala, Paddle para los amigos. Es el código más sencillo que vamos a incluir. Pulsamos en el objeto para activarlo y ver su ventana de código. En Eventos seleccionamos Al hacer click en Bandera Verde y lo arrastramos a la ventana de código. Justo debajo incluimos el comando de Movimiento Ir a x: (0) y: (-146). Esto hará que cada vez que inicie el juego irá a la posición inferior de la ventana. Sólo se moverá en horizontal, pero no está de más forzar también la posición vertical. Luego veremos que si variamos la coordenada "Y" de la pala tendremos que hacer más cambios.

Movimiento de la pala
También vamos a crear una variable llamada PosX. A esta variable le vamos a dar Por Siempre el valor de la Posición X de la pala. ¿Porqué? Ahora lo veremos en un chispo. Paciencia. Nos ayudará a que el rebote de la bola sea más predecible.

Ahora toca mover la pala. El movimiento va a ser muy sencillo, izquierda y derecha. Ya está. Lo
haremos mediante los cursores correspondientes. Se podrían usar la opcion que tenemos dentro de Eventos "Al Pulsar Tecla...", pero sería más lento y queremos que nada más pulsar una u otra tecla se mueva de un lado a otro. Así que usaremos un nuevo bloque de "Al hacer click en Bandera Verde" seguido de un "Por siempre" y aquí meteremos dos condicionales seguidos. En cada uno comprobará si hemos pulsado el cursor derecho o el izquierdo y moverá diez o menos diez pasos según cual sea

Si pulsamos la bandera verde ahora podremos comprobar que todo está bien. La pala se situará en la parte inferior de la ventana y se moverá a izquierda o derecha según le indiquemos con las flechas.

Ahora nos vamos a la pelota. Si no tienes el objeto en la ventana lo eliges ahora. Uso el objeto Ball, pero se podría usar cualquier otro. De momento elige este por las dimensiones, si coges uno de mayor tamaño puede ocasionar que el juego no funcione correctamente con los ajustes que vamos a utilizar aquí. Pulsmaos sobre el objeto Ball para activar la ventana de código correspondiente.

Dos bloques usaremos también en este objeto, como veis es muy básico hacer el juego simple. Para complicarse siempre hay tiempo y ya notaréis como os va pidiendo mejoras y cambios.
Posición inicial y comportamiento de la bola

El primero será el de inicio y movimiento de la pelota. La vamos a ubicar en una posición abajo a la izquierda de la ventana, le asignamos una dirección aleatoria entre 15 y 60 grados y le indicamos que siempre se mueva 10 pasos y rebote si toca algún borde. Aquí, el valor 10 del movimiento lo podríamos sustituir por una variable llamada, por ejemplo "VelocidadBola" e ir incrementándola a lo largo del juego para incrementar su dificultad.

Si veis el código, una vez situada y antes de indicarle las instrucciones del bloque Por Siempre he incluido el evento Enviar (Inicio) y esperar. Cuando creemos el código de los ladrillos veremos que ese inicio nos va a dar la orden para crear todos los ladrillos. Se tardan unos segundo, por eso tenemos que esperar para que comience el juego.

Si probaramos ahora a pulsar en la bandera verde, veremos que la pelota pasa olímpicamente de nosotros. Como si no estuviéramos, qué sinvergüenza. Pero la culpa es nuestra, hace exactamente lo que le decimos que haga, así que ahora vamos a ver como hacer que interactúen la pala y la bola.

Comportamiento en cada caso
De nuevo creamos un evento de bandera verde y un bloque Por siempre. En caso de que se modifique el juego y, por ejemplo, pongamos vidas o la opción de "Continuar partida", podemos cambiar ese por siempre por un Repetir hasta que u otra opción.

Tres condicionales vamos a poner. El primero comprobará si la posición vertical, la "Y" de la bola, es menor que -148. ¿Recordáis qué valos le dimos a la "Y" de la pala? En juego terminará cuando la bola baje de ese punto, con la orden Detener Todos.

El segundo condicional nos dirá si hemos tocado la pala. En ese caso tendrá que rebotar, sí, pero... ¿hacia dónde? Aquí entra en juego la variable PosX que constantemente se actualiza con el valor de la pala. Si rebota en el centro de la bola rebotará casi en vertical hacia arriba, si choca con la parte izquierda o derecha lo hará hacie ese lado, con más ángulo cuanto más alejado del centro de la pala golpée.

El tercero es prácticamente igual, solo que comprobando si tocamos el ladrillo que se llama Button2. En este caso rebotará como si hubiera tocado un borde cualquiera.

Si pulsamos en la bandera verde veremos que, si no paramos la bola con la pala, el juego se detendrá y habremos perdido. Pero es un poco aburrido, ¿verdad? Vamos a crear los ladrillos.

Disfraces del botón ladrillo
El objeto Button2 es el que usaremos como ladrillo. Para ello modificaremos el tamaño al 50%, que si no se llena en un chispo la pantalla. También nos iremos a la pestaña Disfraces y lo maquearemos a nuestro antojo.

El primero lo rellenaremos por completo de color rojo, el segundo de amarillo y el tercero verde. Ahora veremos qué implica en el juego. nos permitirá iniciar en rojo, cambiará a amarillo con el primer golpe, a verde con el segundo y luego desaparecerá. ¿Son simplones los disfraces? Pues sí, así que no te cortes y haz tus propios dibujos. Que se vaya rompiendo poco a poco, que aparezcan grietas, ... todo un universo de posibilidades.

Pero un solo ladrillo haría que el juego fuera sencillo en exceso, así que vamos a crear más. ¿De qué
¿Jugamos al escondite?
manera podemos hacerlo sin llenarlo todo de objetos y escribiendo código en cada uno? Pues usando los clones. Clonar un objeto es crear una nueva instancia del mismo. Sigue siendo el mismo objeto, con el mismo comportamiento, pero se multiplicará cada vez que queramos.

Lo primero será esconder el ladrillo original, el ladrillo madre, que será el único que no usaremos. Esto es por simple comodidad, así podremos crear la matriz de clones sin tener en cuenta que en primer objeto ya existe. Nos vamos a Eventos y en Al hacer clic en Bandera Verde le decimos esconder que está en apariencia.

Posición de cada ladrillo
En Variables vamos a crear dos llamadas LadrilloX y LadrilloY, que le dirá al clon dónde situarse. Aquí se pueden crear de varias maneras los clones, podemos situar al ladrillo madre en la ubicación que queramos, crear el clon ahí y mover el ladrillo o cambiar las variables y que cuando se cree el clon la lea para saber dónde ir. Yo prefiero la segunda pero, como todo en este tutorial, tu hazlo como quieras, prueba de mil maneras distintas y quédate con la que más te guste. Al fin y al cabo es tu juego.

En este caso comenzamos por la posición de arriba a la izquierda, y vamos a dibujar tres finas de siete ladrillos cada una. Si os fijáis en la imagen de la izquierda, cada fila se forma partiendo del valor X= -260 y sumando 60 pasos para el siguiente ladrillo.

Una vez completados los siete ladrillos de la fila volvemos a X=-260 e incrementamos Y en -30. Así la siguiente fila estará 30 pasos por debajo. Y vuelta a empezar. Tres repeticiones de siete repeticiones. Es más fácil hacerlo que decirlo.

Todo esto comienza Al recibir Inicio, que es el evento que envía la bola al iniciar. De esta manera, hasta que no termine todo el proceso de dibujar los ladrillos, la bola no se moverá.

Comportamiento de los ladrillos
En cada repetición de las 21 que hace envía la orden crear clon de mí mismo, es decir, del ladrillo, del Button2. Ahora vamos a decirle al clon qué es lo que tiene que hacer cuando sea creado.

Lo primero será cambiar al disfraz 1, que llamamos Rojo. Nos podemos referir a él de las dos maneras, en la pestaña de dibujo tenemos el nombre y número de cada uno de los disfrazes.

Luego se situa en la posición que le ha tocado y se muestra. Recordad que al inicio le hemos dicho que se oculte.

Bien, ya tenemos nuestra matriz de ladrillos creada. Ahora hay que indicar qué hacer cuando golpée la bola.

El rojo es el disfraz 1, así que mientras no sea verde (que es el tres) incrementará en uno el disfraz. Es decir: si es golpeado por la bola estando rojo pasará a amarillo. Si este amarillo toca la bola pasará a verde y, como el verde es el número 3 que no es menor que tres, ovbiamente, se esconderá y desaparecerá de la pantalla. Esto es un error mío. Lo ideal sería no que se escondiera, sino que se eliminara este clon. Y ya que tenemos las herramientas pues lo podemos hacer sin problemas cambiando ese esconder por la opción eliminar este clon que hay en control. En este juego no se notará, pero en otro que tengamos bastantes más clones, si no los vamos eliminandos provocará que se ralentice y que no nos deje crear nuevos clones. Así que lo mejor es, cuando ya no nos sirva, eliminarlo.

Y ya está. ¿A que no era para tanto? Recapitulamos. Hemos creado una pala que movemos solo en horizontal con los cursores. Una bola que rebota en todo menos por debajo de la pala. Unos ladrillos que se van "gastando" hasta desaparecer al tercer toque.

¿Quieres darle emoción? Cambia la velocidad de la bola. Usa una variable en lugar del valor fijo de pasos y que se incremente al eliminar un ladrillo, o cada diez segundos, por ejemplo. Podemos también ponerle vidas, puntos, tiempo, cambiar la bola por un alien, la pala por una morcilla de Burgos y los ladrillos por la cara de nuestro polítito preferido. Podemos hacer lo que queramos, para eso es scratch.

Si te ha gustado me lo puedes comentar, si no también, mi intención es hacer varios tutoriales de este estilo y tu retroalimentación me hará mejorar y mejorarlos.


Comentarios

Entradas populares de este blog

Entramos en Classrom

Cube Timer, Cronómetro para cubos de Rubik

¡Luces fuera!