Esempio n. 1
0
    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'
Esempio n. 2
0
    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_)