gpt4 book ai didi

python - 这段代码会发生什么?

转载 作者:行者123 更新时间:2023-11-30 23:15:48 25 4
gpt4 key购买 nike

我一直在努力学习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() 返回一个列表对象,其中包含零个或多个事件。 len() 返回该列表中的项目数 - 将其与 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

这段代码有一些令人深感不安的事情。

  1. 此方法没有单一、明确的目的。它负责退出游戏并返回按键释放。
  2. 它的命名不正确,因为它并不是真正检查按下 (KEYDOWN) 而是释放 (KEYUP)。
  3. 如果你按下按键的速度足够快,一些按键事件将会被跳过。仅返回第一个事件,但所有事件均从队列中清除。
  4. 如果这是对事件队列进行的唯一检查,最终该队列将占用所有可用内存(只要有足够的时间和击键次数)。

我确信,如果我花更多时间分析它并查看它的来源,我可以提出更多问题。在您自己的游戏中处理事件时,请将此作为反例。有much better and simpler examples了解如何在那里进行此类事件检查。

关于python - 这段代码会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28080995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com