Окно 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 зависает, но игра продолжает работать(смотрел по логам)

если будет надо для помощи, могу скинуть весь исходник


Ответы (0 шт):