Nuestro proyecto Scratch de los viernes se actualiza hoy con una entrega en la que vamos a crear uno de los juegos más clásicos de la infancia de muchos. Tres carriles y coches que deberás esquivar.
Tal vez lo de los tres carriles te suene de aquellas vetustas máquinitas LCD de los años 90, videoconsolas sencillas pero muy entretenidas. Hoy vamos a crear un sencillo juego de coches en Scratch, paso a paso "y con buena letra", y como siempre dejando un espacio a la imaginación para continuar con el proyecto.
Los que necesitas
Si no tienes en mente el tipo de juego que queremos crear, échale un vistazo al siguiente vídeo para recordar su funcionamiento. La idea es muy sencilla:
https://www.youtube.com/watch?v=z3NgApMqYC4
Básicamente necesitamos un objeto que nosotros manejaremos, y una serie de rivales. El nuestro está siempre en la parte inferior, y los rivales aparecen arriba y van moviéndose hacia abajo.
Es importante mencionar que todo sucede "a saltos", lo cual forma parte del encanto de este tipo de juegos. También deberemos tener en cuenta la existencia de sólo tres carriles, aunque esto es algo que podemos modificar a nuestro antojo.
Recapitulemos: nuestro coche, los coches rivales y tres carriles.
Los tres carriles y nuestro coche
Este juego no permite el movimiento libre por todo el escenario, sino que está limitado a ciertas coordenadas que deberemos utilizar para emular los tres carriles. O lo que es lo mismo: nuestro coche sólo se moverá entre el carril central (x=0), el derecho (por ejemplo x=160) o el izquierdo (x=-160).
El código para implementar esto es relativamente sencillo: si estas en el centro y pulsas la tecla derecha, te mueves al carril derecho; ídem para con la tecla izquierda y el carril izquierdo. De forma homóloga, desde los carriles exteriores sólo podremos movernos al central. A mayores, podemos añadir la condición de esperar hasta que soltemos la tecla para así obligar al usuario a tener que volver a pulsar para ejecutar el movimiento.
El vehículo rival
El funcionamiento es parecido, aunque no el mismo. El vehículo rival debe moverse solo, apareciendo en la parte superior y hacia abajo.
Aquí el punto clave es que debe aparecer al azar, en alguno de los tres carriles habilitados. Las coordenadas las conocemos (-160, 0 y 160 en mi caso) con lo que tendremos que "tirar" un dado, y así se elige dónde aparecerá.
Lo de "tirar el dado" es un símil muy recurrente y sencillo de entender. Tiramos un dado de tres caras y guardamos el resultado en una variable, que podemos llamar rand (del inglés, random); fijar rand a número al azar entre 1 y 3. Listo.
De este modo, cada vez que se ejecute el código rand guardará 1, 2 o 3, que podemos hacer corresponder con cada uno de los carriles. Si rand=1, entonces fijamos la coordenada x a la del primer carril; si rand=2 segundo carril; y por último rand=3 al tercer carril. Previamente hemos tenido que fijar la coordenada vertical a la "altura" donde queremos que aparezca, en mi caso 120.
Tras colocar el vehículo tendremos que hacer que se mueva, algo muy sencillo: repetimos hasta que toque el borde inferior; cambiar coordenada y por un determinado valor. En mi caso he añadido una espera de 0.5 segundos para que de esa sensación de "ir a trompicones" tan característica de las máquinas LCD de antaño.
El programa saldrá de este bucle cuando haya tocado el borde, y es entonces cuando lo esconderemos y deberemos volver al principio. El programa se repetirá tantas veces como indique el repetir (en mi caso 10), aunque también podemos ponerlo por siempre o con otras condiciones como el tiempo (a través del cronómetro)
Los impactos
Por último —en este programa de ejemplo— debemos implementar los impactos, algo más sencillo aún: si nuestro coche toca al rival, se terminó el juego.
Lo habitual es que se utilice un por siempre y dentro de él un condicional si tocando rival, entonces detener todo. Sin embargo, también puede hacerse sin el por siempre (lo mejor es huir de ellos en la medida de lo posible) y con un esperar hasta que tocando rival. Cuando se satisfaga la condición significará que ha ocurrido un impacto, con lo que podemos emitir un mensaje y luego detener todo el programa.
Hasta el infinito... y más allá
Esta es sólo una maqueta del juego que podemos crear partiendo de la base expuesta. Ahora mismo es algo soso y demasiado sencillo, pero... ¿cómo podemos mejorarlo? Aquí unas cuantas propuestas.
- ¿Sólo un coche rival? Vamos a crear múltiples coches rivales y que aparezcan simultáneamente. Pero ojo, tendrás que ajustar la frecuencia con la que aparecen, ya que si nos pasamos podemos crear un juego imposible; recuerda también que debe existir la aleatoriedad, para que el juego sea diferente en cada partida.
- Precisamente en el momento en el que metemos varios coches podemos hablar de niveles de dificultad. ¿De qué dependen? Pues tanto de la frecuencia de aparición de los rivales como de la velocidad con la que se desplazan.
- Lo del fondo blanco queda algo soso: decora el juego añadiendo una carretera, pintando los carriles y poniendo detalles en los arcenes. También puedes darle movimiento a todo esto.
- Redondea el juego añadiendo un sistema de puntuaciones, que puede ir por coches esquivados, por tiempo, por niveles...
- ¿Y si pudieses elegir el coche que pilotas? Esto es algo que ya hemos tratado antes y que bien puede valer para este juego. Y ojo, quien dice coches dice motos, helicópteros, aviones, animales o incluso personas corriendo. Lo que quieras.
Gracias por tus ideas para seguir creando proyectos Scratch y seguir pensando, y por recordarme lo bien que me lo pasaba jugando con mi "maquinita" 🙂
Me encanta esta serie de artículos, aunque no la había comentado hasta ahora. Enhorabuena por tantas propuestas interesantes!!
Cuantos recuerdos con esas maquinitas de coches, como han cambiado los tiempos 🙂
Me ha encantado volver a sentirme nicho de nuevo