def __init__(self):
     random.seed()
     pygame.display.set_caption('INVADER')
     self.screen = pygame.display.set_mode(SCREEN_RECT.size)
     self.clock = pygame.time.Clock()
     self.scene = SceneTitle(self)
     self.running = True
class GameManager(object):
    def __init__(self):
        random.seed()
        pygame.display.set_caption('INVADER')
        self.screen = pygame.display.set_mode(SCREEN_RECT.size)
        self.clock = pygame.time.Clock()
        self.scene = SceneTitle(self)
        self.running = True

    def run(self):
        while self.running:
            pressed_keys = pygame.key.get_pressed()
            filtered_events = self.handle_events(pressed_keys)
            if filtered_events is None:
                self.stop_running()
            else:
                self.update(filtered_events, pressed_keys)
                self.draw()
                self.clock.tick(FPS)

    def update(self, filtered_events, pressed_keys):
        self.scene.update(filtered_events, pressed_keys)

    def draw(self):
        self.screen.fill((0, 0, 0))
        self.scene.draw(self.screen)
        pygame.display.update()

    def change_scene(self, next_scene):
        self.scene = next_scene

    def stop_running(self):
        self.running = False

    def handle_events(self, pressed_keys):
        filtered_events = []
        for event in pygame.event.get():
            if event.type == QUIT:
                return None
            elif event.type == KEYDOWN:
                if event.key == K_F4 and (pressed_keys[K_LALT] or pressed_keys[K_RALT]):
                    return None
                elif event.key == K_ESCAPE:
                    return None
            filtered_events.append(event)
        return filtered_events