def init(self, levels, prev=None, **kws): X, Y = SCREEN_SIZE w, h = (100, 300) # topleft. x, y = ((X - w) / 2, (Y - h) / 2) self.surface = self.parent.reserve(child=self, topleft=(x, y), size=(w,h)) self.parent.listen(self, (KEYDOWN, MOUSEBUTTONDOWN)) self.surface.fill(WHITE) self.buttons = pygame.sprite.Group() self.levels = {} # save the previous menu. self.prev = prev if prev: back = MenuItem(parent=self, controller=self.controller, text='back', containers=[self.buttons]) back.topleft = (20, 20) self.bind('button', self.on_back, back) h = 60 else: h = 20 # set up each of the buttons. for level in levels: b = MenuItem(parent=self, controller=self.controller, text=level.name, containers=[self.buttons], maxwidth=10) b.topleft = (20, h) h += b.size[1] + 20 self.bind('button', self.on_button, b) # now map the button to the level. self.levels[id(b)] = level # add a select button. select = MenuItem(parent=self, controller=self.controller, text='ok!', containers=[self.buttons]) select.topleft = (20, h) self.bind('select_level', self.on_select, select) # description boxes. self.active_desc = 'None'
def init(self, **kws): # request some surface space from the parent. X, Y = SCREEN_SIZE self.surface = self.parent.reserve(child=self, topleft=(X/2 - 50, Y/2 - 50), size=(100, 100)) self.events = Queue.Queue() self.parent.listen(self, (KEYDOWN, MOUSEBUTTONDOWN)) self.surface.fill(WHITE) buttons = ['Play Game!', 'Exit Game!'] self.buttons = pygame.sprite.Group() # set up the buttons. play = MenuItem(parent=self, controller=self.controller, text=buttons[0], containers=[self.buttons]) play.topleft = (20, 20) quit_ = MenuItem(parent=self, controller=self.controller, text=buttons[1], containers=[self.buttons]) quit_.topleft = (20, 60) # bind button state to an event. self.bind('button', self.on_play, play) self.bind('button', self.on_quit, quit_)