#!/usr/bin/env python3 """ Entry point to play the game """ import argparse import pygame from cameltris.controller import Controller, KeyboardController, JoystickController from cameltris.screens.base_screen import Screen from cameltris.screens.in_game import InGame as InGameScreen, Player from cameltris.screens.pause import Pause as PauseScreen from cameltris.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()))