⌨️ Capítulo 5: Entrada del usuario (teclado y control)
Hasta ahora has aprendido a:
- Guardar datos (variables)
- Tomar decisiones (if)
- Repetir acciones (bucles)
Pero falta algo fundamental:
👉 que el usuario pueda interactuar con el programa.
👉 Es decir: que el programa responda a lo que haces.
🧠 ¿Qué es la entrada del usuario?
Es la información que el usuario le da al programa.
En nuestro caso: el teclado.
1. Detectar una tecla
Vamos a detectar si se pulsa una tecla:
if tobi.iskeypressed("a"): # si se pulsa la tecla A
tobi.say("Has pulsado A", 2) # muestra mensaje
¿Qué significa?
- iskeypressed() → detecta una tecla
- Si se cumple → ejecuta acción
👉 Igual que en bloques, pero escrito.
⚠️ Problema importante
Este código tiene un problema:
👉 solo se ejecuta una vez.
Si no pulsas la tecla justo en ese momento… no pasa nada.
2. Solución: usar un bucle
Para comprobar continuamente, usamos while:
while True: # bucle infinito
if tobi.iskeypressed("a"): # si se pulsa A
tobi.say("A pulsada", 1)
👉 Ahora Python está comprobando todo el tiempo.
3. Varias teclas
Podemos controlar varias acciones:
while True:
if tobi.iskeypressed("w"):
tobi.say("Arriba", 1)
if tobi.iskeypressed("s"):
tobi.say("Abajo", 1)
if tobi.iskeypressed("a"):
tobi.say("Izquierda", 1)
if tobi.iskeypressed("d"):
tobi.say("Derecha", 1)
👉 Cada tecla ejecuta una acción distinta.
4. Movimiento real
Ahora combinamos teclado + movimiento:
while True:
if tobi.iskeypressed("w"):
tobi.move(10) # avanza
if tobi.iskeypressed("s"):
tobi.move(-10) # retrocede
if tobi.iskeypressed("a"):
tobi.turn(-10) # gira izquierda
if tobi.iskeypressed("d"):
tobi.turn(10) # gira derecha
👉 Esto ya es control en tiempo real.
🧠 Cómo piensa Python aquí
El programa hace esto muy rápido:
- Comprueba teclas
- Ejecuta acción si se cumplen
- Vuelve a comprobar
👉 Muchas veces por segundo.
⚠️ Error típico
❌ Error
👉 Las teclas van entre comillas: "a"
🚀 Reto Abutuber: Control básico
Crea un programa donde:
- W → avanza
- S → retrocede
- A → gira izquierda
- D → gira derecha
Extra: Haz que diga algo cuando avances
Ver solución
while True:
if tobi.iskeypressed("w"):
tobi.move(10)
tobi.say("Avanzo", 0.5)
if tobi.iskeypressed("s"):
tobi.move(-10)
if tobi.iskeypressed("a"):
tobi.turn(-10)
if tobi.iskeypressed("d"):
tobi.turn(10)
💡 Consejo Abutuber: Aquí es donde tus programas dejan de ser estáticos y empiezan a reaccionar como un videojuego real.