🧠 Capítulo 8: Condiciones avanzadas y lógica del programa

En el capítulo anterior conseguiste algo muy importante:

👉 que el programa tenga memoria (variables).

Ahora vamos a dar el siguiente paso:

👉 usar esa información para tomar decisiones inteligentes.

🧠 ¿Qué significa esto?

No se trata solo de reaccionar al teclado…

👉 se trata de que el programa decida qué hacer según lo que está pasando.

1. Comparar valores

Podemos hacer preguntas como:

  • ¿vidas es 0?
  • ¿puntos es mayor que 10?

En Python usamos:

if vidas <= 0:
  tobi.say("GAME OVER", 2)

¿Qué significa?

  • <= → menor o igual
  • Si se cumple → ejecuta el código

2. Varias condiciones

Podemos controlar diferentes situaciones:

if vidas <= 0:
  tobi.say("GAME OVER", 2)

elif puntos >= 10:
  tobi.say("¡Nivel completado!", 2)

¿Qué hace esto?

  • Primero comprueba vidas
  • Si no se cumple → comprueba puntos

3. Usar condiciones dentro del juego

Ahora lo integramos todo:

tobi = Sprite('Tobi')

puntos = 0
vidas = 3
velocidad = 5

while True:

  if tobi.iskeypressed("w"):
    tobi.move(velocidad)
    puntos = puntos + 1

  elif tobi.iskeypressed("s"):
    tobi.move(-velocidad)
    vidas = vidas - 1

  if vidas <= 0:
    tobi.say("GAME OVER", 2)

  tobi.delay(0.05)

👉 Ahora el programa reacciona a lo que ocurre.

⚠️ Problema importante

Este código tiene un fallo:

👉 aunque salga GAME OVER… el programa sigue funcionando.

👉 No se detiene.

4. Detener el programa (break)

Para parar el bucle usamos break:

if vidas <= 0:
  tobi.say("GAME OVER", 2)
  break # detiene el bucle

👉 Ahora el programa termina correctamente.

5. Lógica completa

Ya tenemos un sistema con sentido:

  • Acción → cambia variables
  • Variables → generan decisiones
  • Decisiones → cambian el comportamiento

👉 Esto es programación real.

🧠 Cómo piensa Python

En cada ciclo:

  • Lee entradas
  • Actualiza variables
  • Evalúa condiciones
  • Actúa en consecuencia

👉 Es un sistema completo.

🚀 Reto Abutuber: Lógica completa

Crea un programa donde:

  • W → suma puntos
  • S → resta vidas
  • Si vidas = 0 → GAME OVER y se detiene
  • Si puntos = 10 → mensaje de victoria

Extra: muestra puntos y vidas en pantalla

Ver solución
tobi = Sprite('Tobi') # personaje

puntos = 0
vidas = 3
velocidad = 5

while True:

  if tobi.iskeypressed("w"):
    tobi.move(velocidad)
    puntos = puntos + 1

  elif tobi.iskeypressed("s"):
    tobi.move(-velocidad)
    vidas = vidas - 1

  if vidas <= 0:
    tobi.say("GAME OVER", 2)
    break

  if puntos >= 10:
    tobi.say("¡Ganaste!", 2)

  tobi.delay(0.05)

💡 Consejo Abutuber: Un buen programa no solo ejecuta acciones… toma decisiones basadas en lo que ocurre.