这段代码中发生了什么?
What happens in this code?
我一直在努力学习python。但是不太了解事件语法发挥作用的部分。请解释它需要什么样的值等,我们如何将它与整数值(如 0)进行比较。
def checkForKeyPress():
if len(pygame.event.get(QUIT)) > 0:
terminate()
keyUpEvents = pygame.event.get(KEYUP)
if len(keyUpEvents) == 0:
return None
if keyUpEvents[0].key == K_ESCAPE:
terminate()
return keyUpEvents[0].key
我想我已经过度回答了你的问题。 pygame.event.get()
returns 一个包含零个或多个事件的列表对象。 len()
returns 该列表中的项目数 - 将其与 0 进行比较可以告诉您有关列表是否为空的信息。
def checkForKeyPress():
#if I retrieve at least one quit event since I last checked
if len(pygame.event.get(QUIT)) > 0:
#quit the game
terminate()
#retrieve all the key release events since we last checked
keyUpEvents = pygame.event.get(KEYUP)
#if there are no key release events
if len(keyUpEvents) == 0:
#there was no key press, don't return anything
#and skip the rest of the method
return None
#if the user pressed the escape key
if keyUpEvents[0].key == K_ESCAPE:
#quit the game
terminate()
#if we haven't returned or quit already
#return the first key released since we last checked
return keyUpEvents[0].key
这段代码有一些令人深感不安的事情。
- 此方法没有一个明确的目的。它负责退出游戏并返回按键释放。
- 它的命名不正确,因为它并不是真正检查印刷机 (
KEYDOWN
),而是检查发行版 (KEYUP
)。
- 如果您按得足够快,一些按键事件将被跳过。仅返回第一个事件,但所有事件都已从队列中清除。
- 如果这是对事件队列进行的唯一检查,最终队列将占用所有可用内存(如果有足够的时间和击键)。
如果我花更多时间分析它并查看它的来源,我相信我会提出更多问题。请在您自己的游戏中处理事件时以此作为反例。那里有 much better and simpler examples 如何执行此类事件的检查。
我一直在努力学习python。但是不太了解事件语法发挥作用的部分。请解释它需要什么样的值等,我们如何将它与整数值(如 0)进行比较。
def checkForKeyPress():
if len(pygame.event.get(QUIT)) > 0:
terminate()
keyUpEvents = pygame.event.get(KEYUP)
if len(keyUpEvents) == 0:
return None
if keyUpEvents[0].key == K_ESCAPE:
terminate()
return keyUpEvents[0].key
我想我已经过度回答了你的问题。 pygame.event.get()
returns 一个包含零个或多个事件的列表对象。 len()
returns 该列表中的项目数 - 将其与 0 进行比较可以告诉您有关列表是否为空的信息。
def checkForKeyPress():
#if I retrieve at least one quit event since I last checked
if len(pygame.event.get(QUIT)) > 0:
#quit the game
terminate()
#retrieve all the key release events since we last checked
keyUpEvents = pygame.event.get(KEYUP)
#if there are no key release events
if len(keyUpEvents) == 0:
#there was no key press, don't return anything
#and skip the rest of the method
return None
#if the user pressed the escape key
if keyUpEvents[0].key == K_ESCAPE:
#quit the game
terminate()
#if we haven't returned or quit already
#return the first key released since we last checked
return keyUpEvents[0].key
这段代码有一些令人深感不安的事情。
- 此方法没有一个明确的目的。它负责退出游戏并返回按键释放。
- 它的命名不正确,因为它并不是真正检查印刷机 (
KEYDOWN
),而是检查发行版 (KEYUP
)。 - 如果您按得足够快,一些按键事件将被跳过。仅返回第一个事件,但所有事件都已从队列中清除。
- 如果这是对事件队列进行的唯一检查,最终队列将占用所有可用内存(如果有足够的时间和击键)。
如果我花更多时间分析它并查看它的来源,我相信我会提出更多问题。请在您自己的游戏中处理事件时以此作为反例。那里有 much better and simpler examples 如何执行此类事件的检查。