summaryrefslogtreecommitdiff
path: root/cameltris.py
blob: 50ebb0167715deab39a16ab931b071ee2f39bd6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/env python3

import argparse

import pygame

from pycameltris.controller import Controller, KeyboardController, JoystickController
from pycameltris.screens.Screen import Screen
from pycameltris.screens.InGame import InGame as InGameScreen, Player
from pycameltris.screens.Pause import Pause as PauseScreen
from pycameltris.misc import Pause, UnPause


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")

ARGS = vars(PARSER.parse_args())

print(ARGS)

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)