¿Cómo obtener entrada de teclado en PyGame?

Mientras usamos el módulo pygame de Python, a veces necesitamos usar la entrada del teclado para varias operaciones, como mover un personaje en una dirección determinada. Para lograr esto, tenemos que ver todos los eventos que suceden. Pygame realiza un seguimiento de los eventos que ocurren, que podemos ver con la función events.get(). En este artículo, vamos a discutir cómo podemos obtener y usar varias entradas de teclado en pygame.

Detectar si se presiona una tecla:

Cada vez que se presiona o suelta una tecla, pygame.event() pone en cola los eventos pygame.KEYDOWN y pygame.KEYUP respectivamente.

Por ejemplo, si queremos detectar si se presionó una tecla, rastrearemos si ocurrió o no algún evento de pygame.KEYDOWN y, en consecuencia, sabremos si se presionó o no alguna tecla. El código para detectar si se presionó o no alguna tecla se puede escribir como:

Python

# importing pygame module
import pygame
 
# importing sys module
import sys
 
# initialising pygame
pygame.init()
 
# creating display
display = pygame.display.set_mode((300, 300))
 
# creating a running loop
while True:
       
    # creating a loop to check events that
    # are occurring
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
         
        # checking if keydown event happened or not
        if event.type == pygame.KEYDOWN:
           
            # if keydown event happened
            # than printing a string to output
            print("A key has been pressed")

Producción:

Después de ejecutar este código, se ve que cada vez que se presiona una tecla, se imprime una string «Se ha presionado una tecla» en la terminal

Detectar qué tecla se presionó:

Para saber qué tecla se presionó, debemos verificar la variable event.key que corresponde a qué teclas de pygame. Por ejemplo, la tecla de pygame para la letra «A» es «K_a», entonces compararemos event.Key con K a y si resulta igual, significa que se presionó la tecla «A».

Las diversas teclas del teclado y las correspondientes teclas de pygame son:

pygamekey Descripción
K_RETROCESO retroceso
K_TAB pestaña
K_CLEAR claro
K_RETORNO devolver
K_PAUSA pausa
K_ESCAPE Escapar
ESPACIO_K espacio
K_EXCLAIM exclamar
K_HASH picadillo
K_QUOTEDBL citadobl
K_DÓLAR dólar
K_AMPERSAND ampersand
K_CUOTA cotizar
K_LEFTPAREN paréntesis izquierdo
K_RIGHTPAREN paréntesis derecho
K_ASTERISCO asterisco
K_PLUS Signo de más
K_COMMA coma
K_MINUS  signo menos
PERIODO_K  período
K_SLASH barra inclinada
K_0  0
K_1 1
K_2 2
K_3 3
K_4 4
K_5 5
K_6 6
K_7 7
K_8 8
K_9 9
K_COLON colon
K_PUNTO Y COMA punto y coma
K_LESS signo menor que
K_IGUALES signo de igual
K_MAYOR signo mayor que
K_PREGUNTA  signo de interrogación
K_AT a
K_SOPORTE IZQUIERDO corchete izquierdo
K_RETROCESO  barra invertida
K_SOPORTE DERECHO   soporte derecho
K_CARET signo de intercalación
K_UNDERSCORE guion bajo
K_RETROCITA tumba
K_a,b,c…….z Alfabeto de la A a la Z
K_DELETE Eliminar
K_KP0, K_KP1, K_KP2….K_KP9 teclado 0 a 9
K_KP_PERIOD periodo del teclado
K_KP_DIVIDE división del teclado
K_KP_MULTIPLY teclado multiplicar
K_KP_MINUS teclado menos
K_KP_PLUS   teclado más
K_KP_ENTER teclado entrar
K_KP_EQUALS teclado es igual
K_UP flecha arriba
K_ABAJO flecha hacia abajo
K_DERECHO  flecha correcta
K_IZQUIERDA   Flecha izquierda
K_INSERTAR Insertar
K_HOME Hogar
K_END Final
K_PÁGINA ARRIBA  Página arriba
K_ABAJO DE PÁGINA   Página abajo
K_F1, K_F2, K_F3……K_F15 F1 a F15
K_NUMLOCK Num lock
K_BLOQ MAYÚS Capsloack
K_BLOQUEO DE DESPLAZAMIENTO pergamino
K_RSHIFT Giro a la derecha
K_MAYÚS Shift izquierdo
K_RCTRL control correcto
K_LCTRL Control izquierdo
K_RALT  Alt derecha
K_LALT  Alt izquierda
K_RMETA meta derecha
K_LMETA  meta izquierda
K_LSUPER tecla izquierda de Windows
K_RSUPER  tecla derecha de Windows
MODO_K cambio de modo
K_AYUDA Ayuda
K_IMPRIMIR Imprimir pantalla
K_SYSREQ sysrq
K_BREAK Romper
K_MENU Menú
K_POWER Energía
K_EURO Euro

Por ejemplo, vamos a crear un código para verificar si se presionó o no la tecla «A» o «J» o «P» o «M». El código para verificar será: 

Python

# importing pygame module
import pygame
 
# importing sys module
import sys
 
# initialising pygame
pygame.init()
 
# creating display
display = pygame.display.set_mode((300, 300))
 
# creating a running loop
while True:
       
    # creating a loop to check events that
    # are occurring
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
         
        # checking if keydown event happened or not
        if event.type == pygame.KEYDOWN:
               
            # checking if key "A" was pressed
            if event.key == pygame.K_a:
                print("Key A has been pressed")
               
            # checking if key "J" was pressed
            if event.key == pygame.K_j:
                print("Key J has been pressed")
               
            # checking if key "P" was pressed
            if event.key == pygame.K_p:
                print("Key P has been pressed")
             
            # checking if key "M" was pressed
            if event.key == pygame.K_m:
                print("Key M has been pressed")

Producción:

Cuando ejecutamos este código y presionamos las teclas dadas, las strings correspondientes se imprimirán en la terminal.

Publicación traducida automáticamente

Artículo escrito por yashgupta0524 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *