Làm thế nào để nhập dữ liệu bằng bàn phím trong PyGame?

Category: Pygame

Khi sử dụng mô-đun pygame của Python, đôi khi chúng ta cần sử dụng dữ liệu nhập từ bàn phím cho nhiều thao tác khác nhau, chẳng hạn như di chuyển một nhân vật theo một hướng nhất định. Để làm được điều này, chúng ta phải xem tất cả các sự kiện đang diễn ra. Pygame theo dõi các sự kiện xảy ra, và chúng ta có thể xem chúng bằng hàm events.get(). Trong bài viết này, chúng ta sẽ thảo luận về cách lấy và sử dụng các dữ liệu nhập từ bàn phím khác nhau trong pygame.

Phát hiện xem một phím có được nhấn hay không:

Bất cứ khi nào một phím được nhấn hoặc thả, pygame.event() sẽ xếp hàng các phương thức pygame.KEYDOWN và pygame.KEYUP tương ứng.

Ví dụ, nếu chúng ta muốn phát hiện xem một phím có được nhấn hay không, chúng ta sẽ theo dõi xem có sự kiện pygame.KEYDOWN nào xảy ra hay không và theo đó, chúng ta sẽ biết được liệu có phím nào được nhấn hay không. Mã để phát hiện xem có phím nào được nhấn hay không có thể được viết như sau:

# nhập mô-đun pygame
import pygame

# nhập mô-đun sys
import sys

# khởi tạo pygame
pygame.init()

# tạo cửa sổ hiển thị
display = pygame.display.set_mode((300, 300))

# tạo vòng lặp chạy chính
while True:
      
    # tạo vòng lặp để kiểm tra các sự kiện
    # đang xảy ra
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # thoát pygame và chương trình
            pygame.quit()
            sys.exit()
        
        # kiểm tra xem có sự kiện nhấn phím không
        if event.type == pygame.KEYDOWN:
          
            # nếu có sự kiện nhấn phím
            # thì in một chuỗi ra màn hình
            print("A key has been pressed")

Đầu ra:

Sau khi chạy mã này, có thể thấy rằng bất cứ khi nào một phím được nhấn, một chuỗi "Một phím đã được nhấn" sẽ được in trên thiết bị đầu cuối

Phát hiện phím nào đã được nhấn:

Để biết phím nào đã được nhấn, chúng ta phải kiểm tra biến event.key tương ứng với phím pygame nào. Ví dụ, phím pygame cho chữ cái "A" là "K_a", sau đó chúng ta sẽ so sánh event.Key với K a và nếu chúng giống nhau thì nghĩa là phím "A" đã được nhấn.

Các phím bàn phím khác nhau và các phím pygame tương ứng là:

pygamekey

Sự miêu tả

K_BACKSPACE

backspace

K_TAB

tab

K_CLEAR

clear

K_RETURN

return

K_PAUSE

pause

K_ESCAPE

escape

K_SPACE

space

K_EXCLAIM

exclaim

K_HASH

hash

K_QUOTEDBL

quotedbl

K_DOLLAR

dollar

K_AMPERSAND

ampersand

K_QUOTE

quote

K_LEFTPAREN

left parenthesis

K_RIGHTPAREN

right parenthesis

K_ASTERISK

asterisk

K_PLUS

plus sign

K_COMMA

comma

K_MINUS

 minus sign

K_PERIOD 

period

K_SLASH

forward slash

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_SEMICOLON

semicolon

K_LESS

less-than sign

K_EQUALS

equals sign

K_GREATER

greater-than sign

K_QUESTION 

question mark

K_AT

at

K_LEFTBRACKET

left bracket

K_BACKSLASH 

backslash

K_RIGHTBRACKET  

right bracket

K_CARET

caret

K_UNDERSCORE

underscore

K_BACKQUOTE

grave

K_a,b,c.......z

A to Z Alphabet

K_DELETE

delete

K_KP0, K_KP1, K_KP2....K_KP9

keypad 0 to 9

K_KP_PERIOD

keypad period

K_KP_DIVIDE

keypad divide

K_KP_MULTIPLY

keypad multiply

K_KP_MINUS

keypad minus

K_KP_PLUS  

keypad plus

K_KP_ENTER

keypad enter

K_KP_EQUALS

keypad equals

K_UP

up arrow

K_DOWN

down arrow

K_RIGHT 

right arrow

K_LEFT  

Left arrow

K_INSERT

Insert

K_HOME

Home

K_END

End

K_PAGEUP 

Page Up

K_PAGEDOWN  

Page Down

K_F1, K_F2, K_F3......K_F15

F1 to F15

K_NUMLOCK

Numlock

K_CAPSLOCK

Capsloack

K_SCROLLOCK

Scrollock

K_RSHIFT

Right shift

K_LSHIFT

Left shift

K_RCTRL

right control

K_LCTRL

Left control

K_RALT 

Right alt

K_LALT 

Left alt

K_RMETA

right meta

K_LMETA 

left meta

K_LSUPER

left Windows key

K_RSUPER 

right Windows key

K_MODE

mode shift

K_HELP

Help

K_PRINT

Print Screen

K_SYSREQ

sysrq

K_BREAK

Break

K_MENU

Menu

K_POWER

Power

K_EURO

Euro

Ví dụ, hãy tạo một đoạn mã để kiểm tra xem phím "A", "J", "P" hay "M" đã được nhấn hay chưa. Đoạn mã để kiểm tra sẽ như sau: 

# nhập mô-đun pygame
import pygame

# nhập mô-đun sys
import sys

# khởi tạo pygame
pygame.init()

# tạo cửa sổ hiển thị
display = pygame.display.set_mode((300, 300))

# tạo vòng lặp chạy chính
while True:
      
    # tạo vòng lặp để kiểm tra các sự kiện 
    # đang xảy ra
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        
        # kiểm tra xem có sự kiện nhấn phím hay không
        if event.type == pygame.KEYDOWN:
              
            # kiểm tra xem phím "A" có được nhấn không
            if event.key == pygame.K_a:
                print("Key A has been pressed")
              
            # kiểm tra xem phím "J" có được nhấn không
            if event.key == pygame.K_j:
                print("Key J has been pressed")
              
            # kiểm tra xem phím "P" có được nhấn không
            if event.key == pygame.K_p:
                print("Key P has been pressed")
            
            # kiểm tra xem phím "M" có được nhấn không
            if event.key == pygame.K_m:
                print("Key M has been pressed")

Đầu ra:

When we run this code and press the given keys the corresponding strings will be printed on the terminal.

Published on Jul 28, 2025

Related Posts