Xây dựng và trực quan hóa trò chơi Sudoku bằng Pygame
Sudoku là một trò chơi giải đố sắp xếp số dựa trên logic, kết hợp. Mục tiêu là...
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.
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
Để 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
Sudoku là một trò chơi giải đố sắp xếp số dựa trên logic, kết hợp. Mục tiêu là điền các chữ số vào lưới 9x9 sao cho mỗi cột, mỗi hàng và mỗi ô lưới....
Thuật toán như Tìm kiếm Nhị phân có thể được hiểu dễ dàng bằng cách trực quan hóa. Bài viết này trình bày một chương trình trực quan hóa Thuật toá...
Thuật toán sắp xếp chèn có thể dễ dàng được hiểu bằng cách trực quan hóa. Trong bài viết này, một chương trình trực quan hóa thuật toán sắp xếp ch...
Thuật toán sắp xếp Heap có thể được hiểu dễ dàng bằng cách trực quan hóa. Bài viết này trình bày một chương trình trực quan hóa Thuật toán sắp xếp...
Thuật toán như Tìm kiếm Tam phân có thể được hiểu dễ dàng bằng cách trực quan hóa. Bài viết này trình bày một chương trình trực quan hóa Thuật toá...
Trong bài viết này, chúng ta sẽ xem cách hình dung thuật toán sắp xếp nổi bọt (bubble sort ) bằng PyGame. Cụ thể, khi khởi động ứng dụng PyGame,....