📊 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:
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:
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:
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:
¿Qué significa?
- str() → convierte número en texto
- Permite mostrarlo en pantalla
⚠️ Error típico
❌ 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
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.