Định nghĩa pygame.KEYDOWN là gì và nó có khác gì pygame.KEYUP?

Các bác cho em hỏi em đang học về pygame em muốn hỏi cái đoạn pygame.KEYDOWN định nghĩa là gì và nó có khác gì pygame.KEYUP không? em cảm ơn

Down là gì? Down là xuống.
Keydown là event mà mỗi khi bạn ấn một phím trên bàn phím xuống.
Up là gì? Up là lên.
Keyup là event mà mỗi khi bạn ấn một phím nào đó sau đó thả ra.
Bạn cứ thử test 2 cái if đi.

import pygame

pygame.init()
screen = pygame.display.set_mode((400, 300))
done = False

while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
        if event.type == pygame.KEYDOWN:
            print('down')
        if event.type == pygame.KEYUP:
            print('up')
        
        pygame.display.flip()

Khi bạn ấn phím rồi giữ phím đó một lúc sau đó thả ra, nó sẽ có dạng output thế này này (đây là mình rút gọn 2 phần chính thôi, chứ nó không phải vậy đâu, đoạn giữa nó dài nữa)

down
down
up
# lúc này, bạn đang ấn xuống, bắt được down event
# đương nhiên, vì chưa  xuống hẳn nên ta bắt thêm cả up

up
up
up
# lúc này bạn thả phím, chỉ bắt được up event
2 Likes

WOW cảm ơn bác nhiều ạ rất chi tiết thank youu

Bác cho em hỏi tại sao bên sublime e đã thụt lề đúng nhưng khi vào IDLE của python thì lại thụt lề sai ạ

Chắc lại thụt lề bằng Tab rồi. Tab sublime mặc định là 4 space. Còn IDEL thì, thằng cha nào thiết kế, chứ có phải mình đâu mà mình rõ.
Mà theo chuẩn của Python thì người ta dùng 4 spaces, không dùng tab. Muốn tab mà ra space thì vào trong Sublime -> Preferences -> Settings. Ngó qua cái khung bên phải, thêm cái dòng này vô.

"translate_tabs_to_spaces": true
2 Likes

vẫn bị vậy bác ạ :frowning: thôi em đành làm nốt bên IDLE vậy

cảm ơn bác rất nhiều

Bạn vừa thụt lề bằng tab, vừa thụt lề bằng 4 space. Nhìn trên IDLE thấy khá rõ, vì IDLE có 1 tab có độ rộng là 8, trong khi 1 số dòng thụt vào 4 space.

cảm ơn bác e làm được rồi

Python thụt 2 space mới đúng code style.
Các framework, lib, example đều dùng 2 space, nên bắt chước.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?