【发布时间】:2021-01-15 03:42:37
【问题描述】:
我正在 pygame 中制作 Asteroidz 克隆,并有两个 for event in pygame.event.get() 循环,一个用于检查退出请求以及游戏是否应该通过按空格键开始,然后在游戏中进一步尝试限制玩家按住空格键并连续射击。我的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()
我正在使用shootThrottle 作为尝试阻止子弹被射击的一种方式,直到松开空格键。这个系统可以工作,但是由于for event in pygame.event.get()太慢,它不能正常工作。
非常感谢任何帮助!
【问题讨论】:
标签: python python-3.x loops pygame