-
Notifications
You must be signed in to change notification settings - Fork 0
/
end_state.py
88 lines (71 loc) · 2.74 KB
/
end_state.py
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import pygame
class EndState:
""" Operates end state of game """
MENU_KEY_MAP = {"Up": pygame.K_UP,
"Down": pygame.K_DOWN,
"Select": pygame.K_RETURN,
"Back": pygame.K_ESCAPE}
MAIN_MENU = {" ": 0,
"Rewatch game": 1,
"Rematch": 2,
"Main menu": 3,
"Exit": 4}
def __init__(self, snakes, setup):
self.snakes = snakes
self.font = pygame.font.Font('freesansbold.ttf', 24)
self.screen_dim = setup["ScreenSize"]
self.exit = False
self.rematch = False
self.intro_menu = False
self.current_selection = 1
self.result_msg = "There is no winner..."
for sn in self.snakes:
if sn.alive:
self.result_msg = sn.name + " wins!"
def update(self, event_list):
for event in event_list:
if event.type == pygame.KEYDOWN:
if event.key == self.MENU_KEY_MAP["Up"]:
self.current_selection -= 1
elif event.key == self.MENU_KEY_MAP["Down"]:
self.current_selection += 1
elif event.key == self.MENU_KEY_MAP["Select"]:
self._apply_selection()
self.current_selection -= 1
self.current_selection %= (len(self.MAIN_MENU)-1)
self.current_selection += 1
def render(self, screen):
# Render main menu on screen
y = self._render_y_start
for i, item in enumerate(self.MAIN_MENU):
if self.current_selection == i:
c = (255, 255, 255)
else:
c = (125, 125, 125)
if i == 0:
f = self.font.render(self.result_msg, True, (80, 80, 80))
else:
f = self.font.render(item, True, c)
text_rect = f.get_rect(center=(self.screen_dim[0] / 2, y))
screen.blit(f, text_rect)
y += 30
def _apply_selection(self):
if self.current_selection == self.MAIN_MENU["Rewatch game"]:
self._menu_unassigned()
elif self.current_selection == self.MAIN_MENU["Rematch"]:
self._play_rematch()
elif self.current_selection == self.MAIN_MENU["Main menu"]:
self._main_menu()
elif self.current_selection == self.MAIN_MENU["Exit"]:
self._exit_game()
def _menu_unassigned(self):
print("Menu not yet made")
def _play_rematch(self):
self.rematch = True
def _main_menu(self):
self.intro_menu = True
def _exit_game(self):
self.exit = True
@property
def _render_y_start(self):
return int(self.screen_dim[1] / 2 - (len(self.MAIN_MENU) / 2) * 30)