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
58
59
60
61
62
63
|
#!/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() -> None:
""" Main entry point. """
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 = parser.parse_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)
if __name__ == "__main__":
main()
|