En esta práctica haremos el mítico Pong, creado por Atari es considerado el primer videojuego de éxito de la historia, pero le daremos una estética algo más moderna. Para ello aprenderemos a importar imagenes para usarlas cómo objetos dentro de Scratch.
Crearemos un juego para dos jugadores donde cada uno controla un personaje. Y tendrán que defender su portería para que no entre la pelota.
Comenzaremos descargando las imágenes de todos los objetos que necesitamos, es muy importante que estén en formato .png y que las guardemos en alguna carpeta que conozcamos dentro del ordenador:
x1 objeto redondo para que haga de pelota.
x2 personajes jugables
y un escenario para el fondo (puede tener un formato diferente a .png)
Ahora crearemos los objetos necesarios subiendo las imagenes descargadas. Para ello pasamos el cursor por el icono de "Elige un objeto" (sin hacer clic) y presionamos sobre "Subir objeto". Lo hacemos para la pelota y para los dos personajes.
Para el fondo lo hacemos de forma similar, en el icono de "Elige un fondo" y "Cargar fondo".
Igual que hicimos en la práctica 0, usaremos desde la ventana de "Disfraces" la opción de "Convertir a Vector" con todos los objetos que hemos creado.
El fondo lo ajustaremos manualmente al tamaño de la pantalla.
La pelota sólo nos aseguraremos que está centrada en el diseño.
Con respecto a los jugadores, para que tenga el mismo tamaño y esté equilibrada la defensa, seguiremos los siguientes pasos:
Primero entramos en el editor de disfraces del personaje más grande, y creamos un rectángulo que rodee al personaje, y luego lo llevaremos atrás, para no ocultarlo.
Ahora tenemos que copiar este rectángulo (Ctrl + C) , y sin modificar su tamaño, pegarlo en el otro objeto (Ctrl + V, así conseguimos que tengan el mismo tamaño)
Dentro del segundo personaje, modificamos, si es necesario, el tamaño del jugador para ajustarlo al rectángulo (no modificamos el tamaño del rectángulo)
Y por último nos aseguramos que los personajes están centrados en el diseño del disfraz.
Como últimos objetos, añadiremos dos iguales desde la galería de Scratch, llamados "Line". Y también dos variables a modo de marcador, las llamaré "Goles Mbappé" y "Goles L.Yamal". (las dos variables tienen que tener marcada la opción "Para todos los objetos")
El código de las líneas es el siguiente:
Orientamos las líneas de forma vertical
Nos aseguramos de que se vean
Ajustamos el tamaño para que ocupe sólo una parte del lateral
Y posicionamos la línea pegada al borde
Para la segunda línea el código será exactamente igual, pero cambiamos el valor de (x: -240) a (x: 240).
El código que programaremos para cada jugador será prácticamente el mismo, solo variará la posición inicial y las teclas elegidas para moverlo.
La lógica general es la siguiente:
Mostrar el personaje y ajustar su tamaño.
Colocarlo en su posición inicial, prestando especial atención al eje x, ya que el movimiento lateral estará bloqueado.
Ejecutar un bucle infinito en el que se detecten dos teclas y, en función de cuál se pulse, el personaje se mueva hacia arriba o hacia abajo.
Yo usé las teclas 'Up' y 'Down' para un personaje, y las teclas 'W' y 'S' para el otro. De esta manera, cada jugador podrá controlar a su personaje con sus propias teclas y sin interferir con el movimiento del otro.
Ahora vamos a programar el movimiento de la pelota.
Para ello, debemos hacer que siempre inicie en el centro del campo y que comience su trayectoria en una dirección aleatoria cada vez que arranque la partida. La pelota deberá rebotar tanto al tocar los bordes de la pantalla como cuando colisione con alguno de los personajes. ⬅️⬅️
Un detalle importante es evitar que la pelota comience su recorrido con un ángulo demasiado cercano a 0º o 180º, ya que en ese caso se movería en línea recta horizontal, sin llegar a chocar nunca con los jugadores (o tardando demasiado en hacerlo).
Por tanto, será necesario ajustar el código para que los ángulos iniciales posibles excluyan esas direcciones problemáticas, logrando así un comportamiento más equilibrado y divertido.
Para implementar el sistema de goles y el fin del partido, empezaremos por asignar a cada jugador un marcador inicial de 0 goles.
Esto se consigue añadiendo dos bloques al presionar el botón de Inicio. Dichos bloques pueden colocarse al comienzo de cualquier script ya creado, o bien en un bucle independiente que se ejecute al inicio de la partida.
De este modo, cada vez que reiniciemos el juego, ambos jugadores comenzarán desde cero.
Para gestionar correctamente los goles, utilizaremos las líneas que ya hemos colocado como porterías. Es importante identificar qué "Line" corresponde a cada jugador, de manera que el tanto se sume al marcador correcto.
En la programación de la pelota añadiremos dos condiciones, una para cada portería:
Sumar un gol al marcador del jugador correspondiente.
Colocar el balón frente al jugador contrario (para que haga el saque).
Orientar la pelota hacia la portería opuesta.
Esperar 1 segundo antes de reanudar el movimiento.
Para la otra "Line", aplicaremos exactamente el mismo procedimiento, pero en forma de espejo: cambiando el marcador al que se suma y la posición inicial de la pelota.
Finalmente, cuando uno de los jugadores alcance los 5 goles, el partido terminará automáticamente.
Para ello, añadiremos un bucle de control que verifique continuamente si alguno de los marcadores ha llegado a 5 (es decir, si el valor es mayor que 4). En ese caso, se enviará un mensaje interno llamado "fin".
Al recibir este mensaje, todos los objetos del juego se ocultarán y el fondo cambiará para mostrar el fin del partido y anunciar quién es el ganador.
En el fondo del juego crearemos dos escenarios adicionales ⬆️⬆️: uno mostrando que ha ganado el Jugador 1 y otro indicando que ha ganado el Jugador 2.
La programación del escenario funcionará así: ➡️➡️
Al iniciar el juego, se mostrará el campo de fútbol como fondo principal.
Cuando reciba el mensaje "fin", el programa evaluará qué jugador alcanzó los 5 goles
Si el ganador es el Jugador 1, el fondo cambiará al escenario correspondiente.
Si el ganador es el Jugador 2, se mostrará el fondo alternativo.
De este modo, al finalizar la partida, no solo se detienen los objetos, sino que también se muestra de forma clara quién ha resultado vencedor.
Puedes probar el juego que he creado yo para ver las mecánicas y el resultado final. Para jugar presiona la bandera verde. 💚