El proyecto Scratch de los viernes (VI): esquiva la pelota

Hoy presentamos un nuevo proyecto Scratch de los viernes de corte sencillo, fácil de implementar pero que requiere de una cierta organización para llevarlo a cabo eficazmente. Es un juego, otro más, que consiste en un personaje que deberá esquivar una pelota.
Podemos darle rienda suelta a la creatividad eligiendo qué objetos podremos crear, los fondos, sonidos o mucho más. Como siempre, hoy proponemos una idea de proyecto Scratch con múltiples mejoras posibles. Vamos a ello.
Índice de contenidos
El funcionamiento es muy simple. Queremos conseguir un juego con el que el usuario manejará los movimientos de un personaje u objeto, por ejemplo haciendo que se mueva constantemente hacia el puntero del ratón, a una velocidad determinada. De esta forma le daremos dinamismo, aunque por supuesto también se pueden utilizar otros métodos como las teclas de dirección.
También existirá otro objeto que se moverá automáticamente, rebotando con los bordes del escenario. La finalidad es que el primer objeto - que, recuerdo, nosotros manejamos - esquive al segundo. Fácil, ¿verdad?
Con esta guía afrontaremos el funcionamiento más básico y sencillo de este proyecto y, como es habitual, al final propondremos varios incrementos de mejora para hacer más completo el juego.
Antes de comenzar debemos plantearnos qué objetos necesitamos, y cómo se moverán:
En mi caso he elegido un murciélago que Scratch trae en su biblioteca de objetos para que sea el protagonista del juego (y que al tener disfraces puede dar juego a crear movimientos dinámicos si alternamos los dos disfraces), y una pelota de béisbol que será el 'enemigo' y lo que deberemos esquivar. Te recordamos nuestro artículo cómo buscar imágenes en Google, donde recopilamos trucos avanzados que vienen de perlas, entre otras cosas, para encontrar imágenes para proyectos Scratch.
Ya puestos a los mandos de Scratch tenemos que determinar la primera fase de la programación: inicializar los objetos. Esto significa asignar el estado en el que arrancarán una vez pulsemos la bandera verde de Scratch, incluyendo dónde comenzarán el juego y la dirección que tomarán.
Esta fase es importante tanto en este proyecto como en otros ya que indica precisamente cómo comenzará el proyecto. En este caso, por ejemplo, es necesario que los dos objetos aparezcan en posiciones alejadas, por ejemplo en dos extremos opuestos del escenario. Os recuerdo que el escenario de Scratch es bidimensional y se basa en un eje de coordenadas X-Y, con X entre [-240, 240] e Y entre [-180, 180].
En mi caso, las posiciones de mis objetos son las siguientes:
Las posiciones están claras, y lo siguiente será elegir una dirección para que empiece el movimiento. En el caso del murciélago siempre estará apuntando en la dirección del ratón de ordenador, con lo que no habrá mayor problema; en la pelota deberemos asignar una posición aleatoria apuntando en una dirección al azar entre 1 y 360 grados, cubriendo así la circunferencia completa.
En lo referente al movimiento podríamos utilizar la instrucción 'por siempre', pero entonces el juego no finalizaría nunca. Una opción más atractiva es utilizar un 'repetir hasta que' <tocando el otro objeto> (categoría Control, color amarillo) de forma que cuando los objetos se tocan, el juego finaliza. Dentro de esta sentencia incluiremos las instrucciones de mover X pasos (categoría movimiento, color azul), donde X será la velocidad de movimiento para cada uno de los objetos.
Hablábamos de qué debe ocurrir cuando los objetos se tocan, y aquí está buena parte de la filosofía del juego. En nuestra propuesta sólo se permite una partida, de forma que cuando el jugador 'pierde' debe reiniciarse el juego al completo. Por ello, los objetos se mueven hasta que uno toca al otro; tras ello, el juego termina.
Para detectar esta interacción es cuando utilizamos la instrucción 'tocando X' (categoría Sensores, color azul claro) y la añadimos dentro del 'repetir hasta que'. Una vez se hayan tocado, la ejecución continuará por debajo.
Un aspecto muy interesante para darle enjundia al juego es medir el tiempo, algo que puede hacerse de forma muy sencilla gracias al cronómetro y a una variable que creemos específicamente para ello, del siguiente modo:
Podemos utilizar mensajes para que simplificar el código con la finalidad de facilitar su comprensión, de forma que quedaría de la siguiente forma:
Nota: los mensajes start_time y end_time los envían los objetos cuando el juego se inicia y termina, respectivamente.
Las explicaciones del proyecto Scratch que os traemos hoy suponen una base sobre la que seguir construyendo, con muchísimas posibilidades de ampliación e incrementos. A continuación os proponemos algunas de ellas:
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 las ideas recopiladas en este enlace y, por supuesto, ¡cualquier propuesta o sugerencia que tengas será bienvenida!