Balón prisionero

En este proyecto aprenderás a crear un juego de plataformas, en el que tendrás que esquivar las bolas en movimiento y llegar al final del nivel.

Paso 1: Movimiento del personaje

Comencemos por crear un personaje que pueda moverse hacia la izquierda y hacia la derecha, así como subir escaleras.

Lista de actividades

Abra el proyecto’Dodgeball’ Scratch en línea en jumpto.cc/dodge-go o descárguelo de jumpto.cc/dodge-get y luego ábralo si está usando el editor offline.

El proyecto contiene un fondo con plataformas:

screenshot

Añade un nuevo sprite, que será tu personaje. Es mejor que elijas un sprite con múltiples disfraces, para que parezca que está caminando.

screenshot

Utiliza las flechas del cursor para mover a tu personaje. Cuando el jugador presiona la flecha hacia la derecha, quieres que tu personaje apunte hacia la derecha, mueva unos pasos y cambie al siguiente disfraz:

Prueba tu personaje haciendo clic en la bandera y manteniendo pulsada la tecla de flecha a la derecha. ¿Tu jugador se mueve a la derecha? ¿Tu personaje parece que está caminando?

screenshot

Para mover tu personaje a la izquierda, necesitarás añadir otro bloque si if {.blockcontrol} dentro del bucle forever {.blockcontrol}, que mueve tu personaje a la izquierda.

Pruebe su nuevo código para asegurarse de que funciona. ¿Tu personaje se pone al revés cuando caminas hacia la izquierda?

screenshot

Si es así, puede corregir este error haciendo clic en el icono (i) {.blockensing} del sprite de su personaje y, a continuación, haciendo clic en la flecha izquierda-derecha.

screenshot

O, si lo prefieres, puedes añadir este bloque al inicio del guión de tu personaje:

Para subir por una escalera rosa, tu personaje debe moverse ligeramente hacia arriba cada vez que se pulsa la flecha hacia arriba y está tocando el color correcto. Añade este código dentro del bucle forever{.blockcontrol} de tu personaje para siempre:

Pon a prueba a tu personaje – ¿puedes subir las escaleras rosas y llegar al final de tu nivel?

screenshot

Desafío: Completar el nivel

¿Puedes añadir más código a tu personaje para que diga algo si if{.blockcontrol} llega a la puerta verde?

screenshot

Paso 2: Gravedad y salto

Vamos a hacer que tu personaje se mueva de forma más realista, añadiendo gravedad y permitiéndole saltar.

Lista de actividades

Puede que te hayas dado cuenta de que tu personaje puede salir de una plataforma en el aire. Trata de salir de una plataforma y ver qué pasa.

screenshot

Para arreglar esto, agreguemos gravedad a tu juego. Cree una nueva variable llamada gravedad {.blockdata}. Puede ocultar esta variable de su etapa si lo desea.

screenshot

Añade este nuevo bloque de código, que establece la gravedad a un número negativo, y luego lo usa para cambiar repetidamente la coordenada y de tu personaje.

Haz clic en la bandera y, a continuación, arrastra tu personaje a la parte superior del escenario. ¿Qué es lo que pasa? ¿Funciona la gravedad como esperabas?

screenshot

La gravedad no debería mover a tu personaje a través de una plataforma o una escalera! Añade un bloque if {.blockcontrol} a tu código, para que la gravedad sólo funcione cuando tu personaje esté en el aire. El código de gravedad debería verse así:

Pruebe la gravedad de nuevo. ¿Tu personaje se detiene cuando está en una plataforma o en una escalera? ¿Puedes caminar desde el borde de las plataformas hasta el nivel inferior?

screenshot

También hagamos que tu personaje salte cuando el jugador pulse la barra espaciadora. Una manera muy fácil de hacer esto es mover tu personaje hacia arriba unas cuantas veces, usando este código:

Como la gravedad está constantemente empujando a tu personaje hacia abajo por 4 píxeles, necesitas elegir un número mayor que 4 en tu cambio por (4) change y by (4) bloque {.blockmotion}. Cambia este número hasta que estés contento con la altura que salta tu personaje.

Si pruebas este código, notarás que funciona, pero el movimiento no es muy suave. Para que los saltos parezcan más suaves, tendrás que mover a tu personaje en cantidades cada vez más pequeñas, hasta que ya no salten más.

Para ello, cree otra variable llamada altura de salto (jump height) {.blockdata}. De nuevo, puede ocultar esta variable si lo prefiere.

Elimina el código de salto que has añadido a tu personaje y reemplázalo con este código:

Este código mueve tu personaje hacia arriba por 8 píxeles, luego 7.5 píxeles, luego 7 píxeles, y así sucesivamente, hasta que tu personaje haya terminado de saltar. Esto hace que el salto parezca mucho más suave.

Cambia el valor inicial de tu variable de altura de salto (jump height) {.blockdata} y pruébalo hasta que estés contento con la altura en la que salta tu personaje.}

Desafío: Salto mejorado

Tu personaje puede saltar cuando se pulsa la barra espaciadora, incluso si ya está en el aire. Puede probar esto manteniendo pulsada la barra espaciadora. ¿Puedes arreglar esto para que tu personaje sólo pueda saltar si (if) {.blockcontrol} está tocando una plataforma azul?

Paso 3: Bolas de esquivar

Ahora que ya tienes a tu personaje en movimiento, vamos a añadir algunas bolas para que tu personaje las evite.

Lista de actividades

Crea un nuevo sprite de bolas. Puedes elegir el tipo de pelota que quieras.

screenshot

Redimensiona tu bola para que tu personaje pueda saltar sobre ella. Intenta saltar por encima de la pelota para probarla.

screenshot

Añade este código a tu bola:

screenshot

Este código crea un nuevo clon de la bola cada 3 segundos. Cada nuevo clon se mueve a lo largo de la plataforma superior.

Haga clic en la bandera para probarlo.

screenshot

Añade más código a tu sprite de bolas, para que se muevan por las 3 plataformas.

screenshot

Finalmente, necesitarás código para cuando tu personaje sea golpeado por una pelota! Añade este código a tu sprite de bolas:

También tendrás que añadir código a tu personaje, para volver al principio cuando sean golpeados:

Pon a prueba a tu personaje y comprueba si vuelve al principio cuando ha sido golpeado por una pelota.

Desafío: Bolas aleatorias

Las bolas que tu personaje tiene que esquivar son todas iguales, y siempre aparecen cada 3 segundos. ¿Puedes mejorarlos, para que ellos:

¿No son todos iguales?
después de una cantidad de tiempo al azar?
son de un tamaño aleatorio?

screenshot

Paso 4: ¡Láseres!

Vamos a hacer su juego un poco más difícil de completar, mediante la adición de láseres!

Lista de actividades

Añade un nuevo sprite a tu juego, llamado’Láser’. Debe tener 2 disfraces, llamados ‘on’ y’off’.

screenshot

Coloque su nuevo láser en cualquier lugar que desee, entre 2 plataformas.

screenshot

Añade código a tu láser, para que cambie entre los dos disfraces.

Si lo prefiere, puede esperar wait{.blockcontrol} una cantidad de tiempo aleatoria random {.blockoperators} entre cambios de vestuario.

Finalmente, agregue código a su láser, para que el mensaje «hit» se emita cuando el láser toque su personaje. Este código será muy similar al código que agregaste a tu sprite de bola.

No necesitas añadir más código a tu personaje, ya sabe qué hacer cuando es golpeado.

Pruebe su juego para ver si puede pasar el láser. Cambie los tiempos de espera wait{.blockcontrol} en su código si los láseres son demasiado fáciles o demasiado duros.

Desafío: Más obstáculos

Si crees que tu juego sigue siendo demasiado fácil, puedes añadir más obstáculos a tu nivel. Puedes añadir lo que quieras, pero aquí tienes algunas ideas:

  • Una mariposa voladora asesina;
  • Plataformas que aparecen y desaparecen;
  • Pelotas de tenis en caída que deben evitarse.

screenshot

Incluso puedes crear más de un fondo y pasar al siguiente nivel cuando tu personaje llegue a la puerta verde:

Desafío: Mejora de la gravedad

Hay otro pequeño error en tu juego: la gravedad no tira de tu personaje hacia abajo si alguna parte de él está tocando una plataforma azul, ¡incluso su cabeza! Usted puede probar esto subiendo la mayor parte del camino por una escalera y luego moviéndose hacia la izquierda.

screenshot

¿Puedes arreglar este error? Para ello, tienes que darle a tu personaje pantalones de diferentes colores (en todos los trajes)….

screenshot

…y luego reemplazar el código:

con:

Recuerde probar sus mejoras para asegurarse de que ha corregido el error!

Desafío: Más vidas

¿Puedes darle a tu jugador 3 vidas lives {.blockdata}, en lugar de simplemente devolverlas al principio cada vez? Así es como tu juego podría funcionar:

Tu jugador comienza con 3 vidas;
Cada vez que tu jugador es golpeado, una vida se pierde y regresa a la largada;
Si no quedan vidas, el juego termina.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Comentarios recientes