-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmenu.py
135 lines (115 loc) · 5.16 KB
/
menu.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import pygame
class Menu():
def __init__(self, game):
self.game = game
self.mid_w, self.mid_h = self.game.DISPLAY_W / 2, self.game.DISPLAY_H / 2
self.run_display = True
self.cursor_rect = pygame.Rect(0, 0, 20, 20)
self.offset = - 100
def draw_cursor(self):
self.game.draw_text('*', 15, self.cursor_rect.x, self.cursor_rect.y)
def blit_screen(self):
self.game.window.blit(self.game.display, (0, 0))
pygame.display.update()
self.game.reset_keys()
def get_gamePlaying(self):
return True
class MainMenu(Menu):
def __init__(self, game):
Menu.__init__(self, game)
self.state = "Start"
self.startx, self.starty = self.mid_w, self.mid_h + 30
self.optionsx, self.optionsy = self.mid_w, self.mid_h + 50
self.creditsx, self.creditsy = self.mid_w, self.mid_h + 70
self.cursor_rect.midtop = (self.startx + self.offset, self.starty)
def display_menu(self):
self.run_display = True
while self.run_display:
self.game.check_events()
self.check_input()
self.game.display.fill(self.game.BLACK)
self.game.draw_text('Main Menu', 20, self.game.DISPLAY_W / 2, self.game.DISPLAY_H / 2 - 20)
self.game.draw_text("Start Game", 20, self.startx, self.starty)
self.game.draw_text("Options", 20, self.optionsx, self.optionsy)
self.game.draw_text("Credits", 20, self.creditsx, self.creditsy)
self.draw_cursor()
self.blit_screen()
def move_cursor(self):
if self.game.DOWN_KEY:
if self.state == 'Start':
self.cursor_rect.midtop = (self.optionsx + self.offset, self.optionsy)
self.state = 'Options'
elif self.state == 'Options':
self.cursor_rect.midtop = (self.creditsx + self.offset, self.creditsy)
self.state = 'Credits'
elif self.state == 'Credits':
self.cursor_rect.midtop = (self.startx + self.offset, self.starty)
self.state = 'Start'
elif self.game.UP_KEY:
if self.state == 'Start':
self.cursor_rect.midtop = (self.creditsx + self.offset, self.creditsy)
self.state = 'Credits'
elif self.state == 'Options':
self.cursor_rect.midtop = (self.startx + self.offset, self.starty)
self.state = 'Start'
elif self.state == 'Credits':
self.cursor_rect.midtop = (self.optionsx + self.offset, self.optionsy)
self.state = 'Options'
def check_input(self):
self.move_cursor()
if self.game.START_KEY:
if self.state == 'Start':
self.game.playing = False
elif self.state == 'Options':
self.game.curr_menu = self.game.options
elif self.state == 'Credits':
self.game.curr_menu = self.game.credits
self.run_display = False
def get_gamePlaying(self):
return self.run_display
class OptionsMenu(Menu):
def __init__(self, game):
Menu.__init__(self, game)
self.state = 'Volume'
self.volx, self.voly = self.mid_w, self.mid_h + 20
self.controlsx, self.controlsy = self.mid_w, self.mid_h + 40
self.cursor_rect.midtop = (self.volx + self.offset, self.voly)
def display_menu(self):
self.run_display = True
while self.run_display:
self.game.check_events()
self.check_input()
self.game.display.fill((0, 0, 0))
self.game.draw_text('Options', 20, self.game.DISPLAY_W / 2, self.game.DISPLAY_H / 2 - 30)
self.game.draw_text("Volume", 15, self.volx, self.voly)
self.game.draw_text("Controls", 15, self.controlsx, self.controlsy)
self.draw_cursor()
self.blit_screen()
def check_input(self):
if self.game.BACK_KEY:
self.game.curr_menu = self.game.main_menu
self.run_display = False
elif self.game.UP_KEY or self.game.DOWN_KEY:
if self.state == 'Volume':
self.state = 'Controls'
self.cursor_rect.midtop = (self.controlsx + self.offset, self.controlsy)
elif self.state == 'Controls':
self.state = 'Volume'
self.cursor_rect.midtop = (self.volx + self.offset, self.voly)
elif self.game.START_KEY:
# TO-DO: Create a Volume Menu and a Controls Menu
pass
class CreditsMenu(Menu):
def __init__(self, game):
Menu.__init__(self, game)
def display_menu(self):
self.run_display = True
while self.run_display:
self.game.check_events()
if self.game.START_KEY or self.game.BACK_KEY:
self.game.curr_menu = self.game.main_menu
self.run_display = False
self.game.display.fill(self.game.BLACK)
self.game.draw_text('Credits', 20, self.game.DISPLAY_W / 2, self.game.DISPLAY_H / 2 - 20)
self.game.draw_text('Made by Raiyan Islam', 15, self.game.DISPLAY_W / 2, self.game.DISPLAY_H / 2 + 10)
self.blit_screen()