🟡 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:

if vidas <= 0:
  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:

game_over = False

👉 Nos dice si el juego sigue activo o no.

💻 Paso 3: Usar la variable en el bucle

Cambiamos el while:

while not game_over:

👉 El juego solo funciona si NO está terminado.

💻 Paso 4: Activar el GAME OVER

Dentro del código:

if vidas <= 0:
  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:

tobi.say("Pulsa R para reiniciar", 2)

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
# SPRITE TOBI

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.