Я делаю клон Asteroidz в Pygame и у меня есть два цикла 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()
слишком медленный, он не работает должным образом.
Любая помощь очень ценится!