Esempio n. 1
0
class RunController:
    """
    This class coordinates the entire game and transfers data between different parts
    This file must be run to start the game
    """

    game: GameController = None
    gph: Graphics = None

    # Initialize objects
    def __init__(self, show_graphics: bool = True):

        self.running: bool = True

        self.game = GameController(self)
        RunController.game = self.game

        self.gph = Graphics(self, self.game.map, self.game.player)
        RunController.gph = self.gph

        self.game_events: list = []
        self.show_graphics: bool = show_graphics
        self.graphics_events: deque = deque([])

    # Update each frame
    def update(self):
        game_events = []
        if self.graphics_events:
            game_events = self.game.event(self.graphics_events.popleft())
        game_events.extend(self.game.update())

        self.graphics_events.extend(self.gph.update(game_events))

        if game_events is not None:
            for e in game_events:
                if e.type() == 'print':
                    pass
                    # print text output also to the console
                    # print(e.get_value('text') if 'text' in e else e.value())

    # Begin the game loop
    def run(self):
        # intro screen (or menu?)
        out = None
        self.gph.intro_start()
        while out is None:
            out = self.gph.intro_update()

        # main game loop
        while self.running:
            self.update()

        pygame.quit()

    # Exit the program
    def quit(self):
        self.running = False
        self.game.quit()
        self.gph.quit()
Esempio n. 2
0
def main():
    resolution = (1200, 800)
    max_fps = 50
    default_backcolor = (0, 0, 0)
    pygame.init()

    screen = pygame.display.set_mode(resolution)
    clock = pygame.time.Clock()

    filename = os.path.normpath("assets/images/stars.jpg")
    image = pygame.image.load(filename)
    background_image = image.subsurface((0,0), (resolution[0], resolution[1])).copy()
    background_image.convert()
    background_image.set_alpha(127)

    main_event_queue = EventQueue()
    clock = pygame.time.Clock()
    context_data = { "clock": clock,
                     "resolution": resolution,
                     "screen": screen,
                    }
    game_context = GameContext(context_data)
    game_controller = GameController(main_event_queue, game_context)
    loop = True
    clock.tick(max_fps)
    clock.tick(max_fps)

    # intro module
    sigla.intro_title(screen, game_context)
    pygame.time.wait(500)
    sigla.fade_to_black(resolution, screen)
    sigla.personaggi_entrano_in_scena(screen, game_context)
    sigla.fade_to_black(resolution, screen)

    while loop:
        loop = main_event_queue.handle_events()
        background_change, background, screen_elements = game_controller.update()
        screen.fill(default_backcolor)
        screen.blit(background_image, (0,0))
        screen_elements.draw(screen)
        pygame.display.flip()
        clock.tick(max_fps)