diff options
Diffstat (limited to 'cameltris/__main__.py')
-rwxr-xr-x | cameltris/__main__.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/cameltris/__main__.py b/cameltris/__main__.py new file mode 100755 index 0000000..a3333c5 --- /dev/null +++ b/cameltris/__main__.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 + +""" Entry point to play the game """ + +import argparse + +import pygame + +from .controller import Controller, KeyboardController, JoystickController +from .screens.base_screen import Screen +from .screens.in_game import InGame as InGameScreen, Player +from .screens.pause import Pause as PauseScreen +from .misc import Pause, UnPause + + +def main(args: dict): + """ Main function to be called with option arguments already parsed """ + pygame.init() + + screen = pygame.display.set_mode((801, 1000)) + + controller: Controller + if args["joystick_id"] is not None: + joystick = pygame.joystick.Joystick(args["joystick_id"]) + joystick.init() + controller = JoystickController(joystick) + else: + controller = KeyboardController(pygame.key) + + # Just one player + players = [Player(controller, args["starting_level"])] + + for player in players: + player.refresh_piece_preview_canvas() + + clock = pygame.time.Clock() + + current_screen: Screen + current_screen = ingame_screen = InGameScreen(players, screen) + + while True: + try: + current_screen.oneframe() + except Pause: + current_screen = PauseScreen(screen) + except UnPause: + current_screen = ingame_screen + + current_screen.refresh() + pygame.display.update() + + clock.tick(60) + + +if __name__ == "__main__": + PARSER = argparse.ArgumentParser() + + PARSER.add_argument("--starting-level", type=int, choices=list(range(1, 30)), default=1) + PARSER.add_argument("--joystick", type=int, dest="joystick_id", metavar="Joystick ID") + + main(vars(PARSER.parse_args())) |