Example #1
0
class LoseMenu(object):
    """docstring for LoseMenu."""

    def __init__(self, main, screen):
        """"Dans ce constructeur on initialise les variables de classe et on appelle la méthode new(self)"""
        self.main = main
        self.screen = screen
        self.newUpdate = False
        self.new()

    def new(self):
        """cette méthode sert a ajouter les bouttons et textes au menu en fonction des variables de classe dans le constructeur"""
        self.loseMenu = Menu(self.screen, self.main, 6).addText('Lose', 60)
        if self.main.getTask('game') != None:
            if self.main.getTask('game')[2].player1Score < self.main.getTask('game')[2].player2Score:
                self.loseMenu.addText('But player 2 was better', 40)
            elif self.main.getTask('game')[2].player1Score > self.main.getTask('game')[2].player2Score:
                self.loseMenu.addText('But player 1 was better', 40)
            else:
                self.loseMenu.addText('Player 1 and 2 have the same score', 40)
        self.loseMenu.addButton('Menu', 'm')

    """les 3 méthodes suivantes sont les méthodes dans lesquelles les tacks sont gérés, ces méthodes sont appellée depuis la méthode run du main"""

    def update(self):
        if self.loseMenu:
            self.main.effects_sounds['victory'].play()
            self.newUpdate = not self.newUpdate

    def draw(self):
        """cette méthode permet de placer les element a render"""
        bg = self.main.background_image_b if self.main.getTask('settingsMenu')[2].biere else self.main.background_image
        self.screen.blit(bg, (0, 0))
        self.loseMenu.render()

    def events(self, event):
        """cette méthode gere les input du clavier et les traite en conséquence"""
        game = False
        res = self.loseMenu.update(event)
        if res == 'm':
            self.main.change = 'mainMenu'
class MainMenu(object):
    """docstring for MainMenu. Cette classe est la classe responsable de la creation et personnalisatioon du mainMenu"""
    def __init__(self, main, screen):
        """"Dans ce constructeur on initialise les variables de classe et on appelle la méthode new(self)"""
        self.main = main
        self.screen = screen
        self.new()
        #handles the falling pawn anim
        self.isPawnFalling = False
        self.fallingPawnX = 0
        self.fallingPawnY = -80
        self.falling = self.main.falling
        self.currentFallingPawn = self.falling[0]
        self.currentFalling = 0

    def new(self):
        """cette méthode sert a ajouter les bouttons et textes au menu en fonction des variables de classe dans le constructeur"""
        self.falling = self.main.falling_b if self.main.getTask(
            'settingsMenu')[2].biere else self.main.falling
        self.currentFallingPawn = self.falling[0]
        self.menu = Menu(self.screen, self.main, 7)
        self.menu.addText('MasterBeer', 60)
        self.menu.addButton('Play', 'p').addButton('Game Mode', 'o').addButton(
            'Settings',
            's').addButton('Rules', 'r').addButton('High score',
                                                   'h').addButton('Quit', 'q')

    """les 3 méthodes suivantes sont les méthodes dans lesquelles les tacks sont gérés, ces méthodes sont appellée depuis la méthode run du main"""

    def update(self):
        pass

    def draw(self):
        """cette méthode permet de placer les element a render"""
        bg = self.main.background_image_b if self.main.getTask(
            'settingsMenu')[2].biere else self.main.background_image
        self.screen.blit(bg, (0, 0))
        self.drawFallingPawn()
        self.menu.render()

    def events(self, event):
        """cette méthode gere les input du clavier et les traite en conséquence"""
        res = self.menu.update(event)
        if res == 'q':
            self.main.running = False
        elif res == 'p':
            self.main.change = 'difficultyMenu'
        elif res == 'o':
            self.main.change = 'gameModeMenu'
        elif res == 'h':
            self.main.change = 'scoreMenu'
        elif res == 'r':
            self.main.change = 'ruleMenu'
        elif res == 's':
            self.main.change = 'settingsMenu'

    """les 3 prochaines méthodes gèrent la création et animation de la bille qui tombe dans le menu"""

    def handleFallingPawnSpawn(self):
        """cette méthode crée une bille a positionner si il y en a pas encore (il alterne entre rouge et blanc) et la positionne, si il y a déja une bille
        il appelle la méthode fallingPawnUpdatePos()"""
        if not self.isPawnFalling:
            if self.currentFalling == 12:  #len liste -1
                self.currentFallingPawn = self.falling[0]
                self.currentFalling = 0
            else:
                self.currentFallingPawn = self.falling[self.currentFalling + 1]
                self.currentFalling += 1
            self.fallingPawnX = random.randint(1, WIDTH - 81)
            self.fallingPawnY = -80
            self.isPawnFalling = True

        else:
            self.fallingPawnUpdatePos()

    def fallingPawnUpdatePos(self):
        """cette méthode rajoute 2 de coord y a la pos de la bille (ca donne un illusion d'animation) . Si la bille n'est plus du tout sur l'écran alors on set
        isPawnFalling a false"""
        if self.fallingPawnY < HEIGHT + 80:
            self.fallingPawnY = self.fallingPawnY + 4
        else:
            self.isPawnFalling = False

    def drawFallingPawn(self):
        """c'est cette méthode qui update sur l'écran la position de bille avec les paramètres fallingPawnX et Y"""
        self.handleFallingPawnSpawn()
        self.screen.blit(self.currentFallingPawn,
                         (self.fallingPawnX, self.fallingPawnY))