Пример #1
0
 def __init__(self, window, *args, **kwargs):
     """ 
         The initial state. This present the player with a list of choices
         that determine the next game state.
     """
     State.__init__(self, window, *args, **kwargs)
     self.window.set_caption("Survive by Nine")
     self.menuloc = (400, 215)        
     self.choices = {1: 'New',
                     2: 'Quit'
                 }
     self.choice = 1
     self.labels = self.build_labels()
     self.load_resources()
     
     self.emitter = BubbleEmitter(window)
     pyglet.clock.schedule_interval(self.emitter.update, 1.0/60.0)
     self.labels[0].set_style("bold", True)
Пример #2
0
class MainMenuState (State):

    def __init__(self, window, *args, **kwargs):
        """ 
            The initial state. This present the player with a list of choices
            that determine the next game state.
        """
        State.__init__(self, window, *args, **kwargs)
        self.window.set_caption("Survive by Nine")
        self.menuloc = (400, 215)        
        self.choices = {1: 'New',
                        2: 'Quit'
                    }
        self.choice = 1
        self.labels = self.build_labels()
        self.load_resources()
        
        self.emitter = BubbleEmitter(window)
        pyglet.clock.schedule_interval(self.emitter.update, 1.0/60.0)
        self.labels[0].set_style("bold", True)
    

    def build_labels(self):
        tl = []
        for c in self.choices.keys():
            tl.append(pyglet.text.Label(self.choices[c],
                                  font_name='Monospace',
                                  font_size=24,
                                  x=self.menuloc[0], y=self.menuloc[1]-(40*c),
                                  anchor_x='center', anchor_y='center'))
        return tl

    def load_resources(self):
        self.logo = pyglet.resource.image("logo.png")
        self.grass = pyglet.resource.image("grass.png")
        self.blend = pyglet.resource.image("blend.png")
        self.ground = pyglet.resource.image("ground1.png")
        self.select = pyglet.resource.media('menu_select.wav',\
            streaming=False)

    def on_draw(self):
        self.window.clear()
        self.grass.blit(20,0)
        self.grass.blit(620,0)
        self.ground.blit(190, 0)
        self.ground.blit(890, 0)
        self.emitter.draw()
        self.blend.blit(0,0)
        self.logo.blit(10, self.window.height-self.logo.height)
        for l in self.labels:
            l.draw()


    def on_key_press(self, k, args):
        labels = self.labels

        if k == key.UP:
            if self.choice == 1:
                labels[self.choice-1].set_style("bold", False)
                self.choice = len(self.choices)
                labels[self.choice-1].set_style("bold", True)
            else:
                labels[self.choice-1].set_style("bold", False)
                self.choice -= 1
                labels[self.choice-1].set_style("bold", True)

        elif k == key.DOWN:
            if self.choice == len(self.choices):
                labels[self.choice-1].set_style("bold", False)
                self.choice = 1
                labels[self.choice-1].set_style("bold", True)
            else:
                labels[self.choice-1].set_style("bold", False)
                self.choice += 1
                labels[self.choice-1].set_style("bold", True)

        elif k == key.ENTER:
            if self.choice == 1:
                self.window.push_state(Playing)
            elif self.choice == 2:
                self.window.pop_state()
                self.window.close()
        elif k == key.ESCAPE:
            self.window.pop_state()
            self.window.close()
        else:
            return pyglet.event.EVENT_HANDLED 

        self.select.play().volume = 0.1


    def on_lose_focus(self):
        pyglet.clock.unschedule(self.emitter.update)
        self.player.pause()
        return pyglet.event.EVENT_HANDLED

    def on_gain_focus(self):
        self.music = pyglet.resource.media('menu.mp3')
        self.player = self.music.play()
        self.player.volume = 0.1
        pyglet.clock.schedule_interval(self.emitter.update, 1.0/60.0)
        return pyglet.event.EVENT_HANDLED