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