🟡 Capítulo 6: GAME OVER real + reinicio del juego
Tu juego ya tiene:
- Movimiento
- Enemigos
- Daño
- Puntos
Pero hay un problema importante:
👉 el juego nunca termina.
🎮 Objetivo del capítulo
Vamos a añadir:
- Pantalla de GAME OVER
- Parar el juego correctamente
- Reiniciar la partida
👉 Esto convierte tu proyecto en un juego completo.
🧠 Idea clave
Un videojuego siempre sigue este ciclo:
- Jugar
- Perder
- Reintentar
👉 Vamos a programar exactamente eso.
💻 Paso 1: Detectar GAME OVER
En el sprite Tobi, añadimos:
tobi.say("GAME OVER", 2)
👉 Cuando no quedan vidas, el juego termina.
⚠️ Problema
Si solo haces eso:
- El juego sigue ejecutándose
- El enemigo sigue moviéndose
👉 Necesitamos parar el juego.
💻 Paso 2: Variable de control del juego
Creamos una variable:
👉 Nos dice si el juego sigue activo o no.
💻 Paso 3: Usar la variable en el bucle
Cambiamos el while:
👉 El juego solo funciona si NO está terminado.
💻 Paso 4: Activar el GAME OVER
Dentro del código:
game_over = True
tobi.say("GAME OVER", 2)
👉 Ahora el juego se detiene de verdad.
💻 Paso 5: Reiniciar el juego
Después del bucle, añadimos:
while True:
if tobi.iskeypressed("r"):
vidas = 3
puntos = 0
game_over = False
break
👉 El jugador puede volver a jugar.
🎮 Resultado final
- El juego termina correctamente
- El jugador ve GAME OVER
- Puede reiniciar la partida
👉 Esto ya es un videojuego completo de verdad.
⚡ Mejora PRO
Puedes mejorar la experiencia:
- Mostrar puntuación final
- Añadir sonido de derrota
- Cambiar fondo al perder
👉 Esto es diseño de videojuegos real.
🚀 Reto Abutuber: Juego completo
Mejora tu juego:
- El jugador pierde vidas
- Cuando llega a 0 → GAME OVER
- El juego se detiene
- Se puede reiniciar con la tecla R
👉 Si no te sale, aquí tienes el código completo:
👀 Ver código completo
import time
tobi = Sprite("Tobi")
vidas = 3
puntos = 0
game_over = False
puede_recibir_dano = True
while not game_over:
if tobi.iskeypressed("w"):
tobi.move(10)
puntos = puntos + 1
tobi.say("Puntos: " + str(puntos), 0.5)
if tobi.istouching("Enemy") and puede_recibir_dano:
vidas = vidas - 1
puede_recibir_dano = False
tobi.say("¡Golpe!", 0.5)
time.sleep(1)
puede_recibir_dano = True
if vidas <= 0:
game_over = True
tobi.say("GAME OVER", 2)
time.sleep(0.2)
tobi.say("Pulsa R para reiniciar", 2)
while True:
if tobi.iskeypressed("r"):
vidas = 3
puntos = 0
game_over = False
break
# SPRITE ENEMY
enemy = Sprite("Enemy")
tobi = Sprite("Tobi")
while True:
if enemy.x < tobi.x:
enemy.move(2)
if enemy.x > tobi.x:
enemy.move(-2)
💡 Consejo Abutuber: Un juego sin final no es un juego… es una demo. Ahora ya tienes un juego completo.