📊 Capítulo 7: Variables y estado del programa

Hasta ahora has conseguido:

  • Controlar a Tobi con el teclado
  • Optimizar el movimiento

Pero hay una gran limitación:

👉 el programa no recuerda nada.

👉 Todo lo que pasa… se pierde.

🧠 ¿Qué es el estado del programa?

Es la información que el programa mantiene mientras se ejecuta.

Por ejemplo:

  • Puntos
  • Vidas
  • Velocidad
  • Nivel

👉 Todo eso se guarda en variables.

1. Crear variables útiles

Vamos a crear algunas:

tobi = Sprite('Tobi') # personaje

puntos = 0 # puntuación
vidas = 3 # vidas del jugador
velocidad = 5 # velocidad de movimiento

👉 Ahora el programa ya tiene memoria.

2. Modificar variables

Las variables pueden cambiar:

puntos = puntos + 1 # suma 1 punto
vidas = vidas - 1 # pierde una vida

Esto significa:

  • Lee el valor actual
  • Lo modifica
  • Guarda el nuevo valor

3. Usar variables con el teclado

Ahora vamos a darle sentido:

tobi = Sprite('Tobi')

puntos = 0
vidas = 3
velocidad = 5

while True:

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

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

  tobi.delay(0.05)

👉 Ahora el programa cambia según lo que haces.

4. Mostrar información

Podemos ver lo que está pasando:

tobi.say("Puntos: " + str(puntos), 0.5)

¿Qué significa?

  • str() → convierte número en texto
  • Permite mostrarlo en pantalla

⚠️ Error típico

tobi.say("Puntos: " + puntos, 1)

❌ Error

👉 No puedes mezclar texto con números directamente

✔ Usa str(puntos)

5. Dar sentido al programa

Ahora el programa ya tiene lógica:

  • Avanzar → recompensa (puntos)
  • Retroceder → penalización (vidas)

👉 Esto ya es comportamiento real.

🧠 Cómo piensa Python

En cada ciclo:

  • Lee entradas (teclado)
  • Modifica variables
  • Guarda el estado

👉 El programa evoluciona.


🚀 Reto Abutuber: Sistema completo

Crea un programa donde:

  • W → avanza y suma puntos
  • S → retrocede y pierde vidas
  • Muestra puntos en pantalla

Extra: muestra también las vidas

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

puntos = 0 # puntuación
vidas = 3 # vidas
velocidad = 5 # velocidad

while True:

  if tobi.iskeypressed("w"):
    tobi.move(velocidad)
    puntos = puntos + 1
    tobi.say("Puntos: " + str(puntos), 0.5)

  elif tobi.iskeypressed("s"):
    tobi.move(-velocidad)
    vidas = vidas - 1
    tobi.say("Vidas: " + str(vidas), 0.5)

  tobi.delay(0.05)

💡 Consejo Abutuber: Cuando usas variables bien, tu programa deja de ser una simple reacción y se convierte en un sistema con memoria.