Окно pygame зависает при переключении окон
я попробовал сделать flappy bird на pygame с помощью класса
вот он и его основные функции:
class Game:
def __init__(self, render=False, FPS=60):
self.render = render
self.FPS = FPS
self.WIDTH = 600 # ширина игрового окна
self.HEIGHT = 400 # высота игрового окна
self.FPS = 60 # частота кадров в секунду
self.PLAYER_SIZE = 25
self.PX = 100
self.MIN_PIPE_GAP = 80
self.PIPE_WIDTH = 50
self.PIPE_SPEED = 4
self.py = self.HEIGHT // 2 - self.PLAYER_SIZE // 2
self.gravity = 0
self.pipes = deque([self.random_pipe(self.WIDTH - 150)])
self.pipes.append(self.random_pipe(self.pipes[0]['x']))
if self.render:
pygame.init()
self.screen = pygame.display.set_mode((self.WIDTH, self.HEIGHT))
self.clock = pygame.time.Clock()
pygame.display.set_caption("AI_flappybird")
def step(self, action):
if action == 1:
self.gravity = -5.5
self.gravity += 0.4
self.py += self.gravity
self.update_pipes()
new_observation = self.get_situation()
done = self.check_death()
if self.render:
self.clock.tick(self.FPS)
self.screen.fill(THECOLORS["lightblue"])
self.draw_pipes()
pygame.draw.rect(self.screen, THECOLORS["purple"], (self.PX, self.py, self.PLAYER_SIZE, self.PLAYER_SIZE))
pygame.display.update()
return new_observation, done
def reset(self):
self.py = self.HEIGHT // 2 - self.PLAYER_SIZE // 2
self.gravity = 0
self.pipes = deque([self.random_pipe(self.WIDTH - 150)])
self.pipes.append(self.random_pipe(self.pipes[0]['x']))
state = self.get_situation()
return state
def close(self):
pygame.quit()
вот main.py, в котором я запускаю игру:
import random
import time
game = Game(render=True)
def test():
for i in range(10):
action = random.randint(0, 15)
no, done = game.step(action)
while not done:
no, done = game.step(action)
action = random.randint(0, 15)
game.reset()
print('die')
game.close()
test()
Проблема в том, что когда я нажимаю на окно pygame или переключаюсь на другое, то окно pygame зависает, но игра продолжает работать(смотрел по логам)
если будет надо для помощи, могу скинуть весь исходник