Exemple #1
0
def main():
    '''(NoneType) -> NoneType'''
    WINDOW_W, WINDOW_H = get_window_dim()

    pygame.init()

    fps_clock = time.Clock()
    FPS = get_fps()

    window = display.set_mode((WINDOW_W, WINDOW_H))

    # Set up arg parser to get the zone
    arg_parser = ArgumentParser()
    # Add the zone argument
    arg_parser.add_argument("zone", help="the zone to play, relative to data/zone")
    # Get the arg
    args = arg_parser.parse_args()

    ZONE = args.zone

    zone = Zone()
    zone.load(ZONE) # This loads the player

    sum_tracker = SumTracker(zone.player)
    keys_tracker = KeysTracker(zone.player, sum_tracker) # Put it below sum_tracker

    zone.render(window)
    sum_tracker.render(window)
    keys_tracker.render(window)

    display.flip()

    running = True
    while running:
        for event in pygame.event.get():
            if event.type == QUIT:
                running = False
            # Check if player won
            elif zone.player.win:
                # Render text to screen saying player won
                FONT_SIZE = 50
                WHITE = (255, 255, 255)
                BLACK = (0, 0, 0)
                FONT = Font(None, FONT_SIZE)
                X1, Y1 = 40, 100
                X2, Y2 = 40, 150
                FONT_S1 = FONT.render("YOU WIN!", False, WHITE)
                FONT_S2 = FONT.render("Click to exit...", False, WHITE)
                # Black out window
                window.fill(BLACK)
                # Render text
                window.blit(FONT_S1, (X1, Y1))
                window.blit(FONT_S2, (X2, Y2))
                
                display.flip()

                # Wait for a click
                new_event = pygame.event.wait() # Some issue with other events getting in
                                                # way, but it seems to work well enough
                while new_event.type != MOUSEBUTTONDOWN:
                    new_event = pygame.event.wait()

                running = False
            # Check for game over
            elif (zone.player.sum < -128) or (zone.player.sum > 127):
                # Game over
                # Render text to screen saying game is over
                FONT_SIZE = 50
                WHITE = (255, 255, 255)
                BLACK = (0, 0, 0)
                FONT = Font(None, FONT_SIZE)
                X1, Y1 = 40, 100
                X2, Y2 = 40, 150
                X3, Y3 = 40, 250
                # Check for underflow or overflow
                if zone.player.sum < -128:
                    status = "UNDERFLOW"
                else:
                    status = "OVERFLOW"
                FONT_S1 = FONT.render("GAMEOVER!", False, WHITE)
                FONT_S2 = FONT.render("YOU CREATED AN {}!".format(status), False, WHITE)
                FONT_S3 = FONT.render("Click to exit...", False, WHITE)
                # Black out window
                window.fill(BLACK)
                # Render text
                window.blit(FONT_S1, (X1, Y1))
                window.blit(FONT_S2, (X2, Y2))
                window.blit(FONT_S3, (X3, Y3))

                display.flip()

                # Wait for a click
                new_event = pygame.event.wait() # Some issue with other events getting in
                                                # way, but it seems to work well enough
                while new_event.type != MOUSEBUTTONDOWN:
                    new_event = pygame.event.wait()

                running = False

            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    zone.move_player("LEFT", window)
                elif event.key == pygame.K_RIGHT:
                    zone.move_player("RIGHT", window)
                elif event.key == pygame.K_UP:
                    zone.move_player("UP", window)
                elif event.key == pygame.K_DOWN:
                    zone.move_player("DOWN", window)
                # Update trackers
                sum_tracker.render(window)
                keys_tracker.render(window)

                display.flip()

        fps_clock.tick(FPS)
    pygame.quit()