Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更快版本的';pygame.event.get();。为什么会错过活动?为什么会推迟活动?_Python_Python 3.x_Loops_Pygame - Fatal编程技术网

Python 更快版本的';pygame.event.get();。为什么会错过活动?为什么会推迟活动?

Python 更快版本的';pygame.event.get();。为什么会错过活动?为什么会推迟活动?,python,python-3.x,loops,pygame,Python,Python 3.x,Loops,Pygame,我在pygame中制作了一个Asterbotz克隆,pygame.event.get()中有两个用于事件的循环,一个用于检查退出请求,一个用于检查游戏是否应该通过按空格键开始,然后在游戏中进一步尝试限制玩家按住空格键并连续射击。mycheck_input函数的相关代码如下,该函数每循环运行一次 def check_input(self): for event in pygame.event.get(): #NOT CHECKING THIS FAST ENOUGH, WHOLE PROC

我在pygame中制作了一个Asterbotz克隆,pygame.event.get()中有两个
用于事件的循环,一个用于检查退出请求,一个用于检查游戏是否应该通过按空格键开始,然后在游戏中进一步尝试限制玩家按住空格键并连续射击。my
check_input
函数的相关代码如下,该函数每循环运行一次

def check_input(self):
    for event in pygame.event.get(): #NOT CHECKING THIS FAST ENOUGH, WHOLE PROCESS IS TOO SLOW
        if (event.type == pygame.KEYUP) and (event.key == pygame.K_SPACE):
            print ('boop')
            self.shootThrottle = 0

    if self.shootThrottle == 0:
        self.shootThrottle += 1
        bullets.add(Bullet(self.shape[0][0],self.shape[0][1], self.angle))

    key = pygame.key.get_pressed()

    if key[pygame.K_LEFT]:
        self.angle -= 7
        self.rotate(-7)
    elif key[pygame.K_RIGHT]:
        self.angle += 7
        self.rotate(7)

    if self.angle > 360:
        self.angle -= 360
    elif self.angle < 0:
        self.angle += 360

    if key[pygame.K_UP]:
        self.accelerate()
    elif key[pygame.K_DOWN]:
        self.decelerate()
def check_输入(自):
对于pygame.event.get()中的事件:#检查速度不够快,整个过程太慢
如果(event.type==pygame.KEYUP)和(event.key==pygame.K_空间):
打印('boop')
self.shootThrottle=0
如果self.shootThrottle==0:
自动油门+=1
项目符号.add(项目符号(自我形状[0][0],自我形状[0][1],自我角度))
key=pygame.key.get_pressed()
如果键[pygame.K_左]:
自转角-=7
自转(-7)
elif key[pygame.K_RIGHT]:
自转角+=7
自转(7)
如果自转角>360:
自转角-=360
elif自转角<0:
自转角+=360
如果键[pygame.K_UP]:
self.accelerate()
elif键[pygame.K_DOWN]:
自我减速
我正在使用
shootThrottle
作为一种手段,试图阻止子弹被射中,直到空格键被释放。此系统工作正常,但由于pygame.event.get()中的
for事件太慢,因此无法正常工作

非常感谢您的帮助

[…]并在
pygame.event.get()中为事件设置两个循环[…]”

这就是问题所在。获取所有消息并将其从队列中删除。请参阅文档:

这将获取所有消息并将其从队列中删除。[…]

如果在多个事件循环中调用了
pygame.event.get()
,则只有一个循环接收事件,但并非所有循环都接收所有事件。因此,某些事件可能会丢失

每帧获取一次事件,并在多个循环中使用它们,或者将列表或事件传递给处理它们的函数和方法:

def handle_事件(事件):
对于事件中的事件:
# [...]
运行时:
event_list=pygame.event.get()
# [...]
#第一事件循环
对于事件列表中的事件:
# [...]
# [...]
#第二事件循环
对于事件列表中的事件:
# [...]
# [...]
#处理事件的函数
处理事件(事件列表)
[…]并在
pygame.event.get()中为事件设置两个循环[…]”

这就是问题所在。获取所有消息并将其从队列中删除。请参阅文档:

这将获取所有消息并将它们从队列中删除。[……]

如果在多个事件循环中调用了
pygame.event.get()
,则只有一个循环接收事件,但并非所有循环都接收所有事件。因此,一些活动似乎被错过了

每帧获取一次事件,并在多个循环中使用它们,或者将列表或事件传递给处理它们的函数和方法:

def handle_事件(事件):
对于事件中的事件:
# [...]
运行时:
event_list=pygame.event.get()
# [...]
#第一事件循环
对于事件列表中的事件:
# [...]
# [...]
#第二事件循环
对于事件列表中的事件:
# [...]
# [...]
#处理事件的函数
处理事件(事件列表)