⌨️ 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:

tobi = Sprite('Tobi') # crea el personaje

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:

tobi = Sprite('Tobi') # crea el personaje

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:

tobi = Sprite('Tobi')

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:

tobi = Sprite('Tobi')

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

if tobi.iskeypressed(a):

❌ 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
tobi = Sprite('Tobi') # crea el personaje

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.