Fin del juego
Este es el paso 5 de los 11 del tutorial para crear un juego Breakout con JavaScript puro. Para que el juego sea más interesante, podemos introducir la posibilidad de perder: si no golpeas la pelota antes de que llegue al borde inferior de la pantalla, se acaba el juego.
Cómo perder
Para que se pueda perder, desactivaremos la colisión de la pelota con el borde inferior de la pantalla. Elimina la última entrada de la lista colliders: { hitbox: { ...baseWallHitbox, top: canvas.height } }.
Así, las tres paredes (superior, izquierda y derecha) harán rebotar la pelota, pero la cuarta (la inferior) desaparecerá, y la pelota podrá caer fuera de la pantalla si la paleta no la alcanza. Necesitamos una forma de detectarlo y actuar en consecuencia. Añade las siguientes líneas a moveBall(), justo después de dt -= hitTime:
const ballIsOutOfBounds = ball.hitbox.bottom > canvas.height;
if (ballIsOutOfBounds) {
// Lógica de fin del juego
alert("¡Fin del juego!");
location.reload();
return;
}
Estas líneas comprueban si la pelota sobresale de los límites del mundo (en nuestro caso, el canvas) y, en ese caso, muestran una alerta. Cuando hagas clic en la alerta, la página se recargará y podrás volver a jugar.
Nota:
La experiencia de usuario aquí es bastante mejorable, porque alert() muestra un cuadro de diálogo del sistema y bloquea el juego. En un juego real, probablemente querrías diseñar tu propio cuadro de diálogo modal con <dialog>.
Además, más adelante añadiremos un botón "Start", pero por ahora nuestro juego empieza en cuanto se carga la página, así que puedes "perder" incluso antes de empezar a jugar. Para evitar ese molesto cuadro de diálogo, a partir de ahora quitaremos la llamada a alert().
Compara tu código
Esto es lo que deberías tener hasta ahora, funcionando en vivo. Para ver su código fuente, haz clic en el botón "Play".
Próximos pasos
Ahora que la mecánica básica del juego está lista, hagámosla más interesante añadiendo ladrillos que romper: es hora de construir el muro de ladrillos.