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