Пример #1
0
class WinMenu(object):
    """docstring for WinMenu."""
    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.winMenu = Menu(self.screen, self.main, 7).addText('Win', 60)
        self.winMenu.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.newUpdate:
            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.winMenu.render()

    def events(self, event):
        """cette méthode gere les input du clavier et les traite en conséquence"""
        game = False
        res = self.winMenu.update(event)
        if res == 'm':
            self.main.change = 'mainMenu'
Пример #2
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.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')
Пример #3
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')
class DifficultyMenu(object):
    """docstring for DifficultyMenu. Cette classe est le menu de gestion des difficultée il est """

    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.difficultyLvl = 0
        self.deja = True
        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 (difficltyLVL)"""
        if self.deja:
            self.difficultyLvl = self.main.getTask('scoreMenu')[2].bottle
            self.deja = not self.deja
        self.difficultyMenu = Menu(self.screen, self.main, 7, 2).addText('Difficulty', 60).addButton('Easy', 'e', GREEN if self.difficultyLvl >= 0 else BLACK).addButton('Medium', 'm', GREEN if self.difficultyLvl >= 1 else BLACK).addButton('Hard', 'h', GREEN if self.difficultyLvl >= 2 else BLACK).addButton('Extreme', 'ex', GREEN if self.difficultyLvl >= 3 else BLACK).addButton('Armand', 'a', GREEN if self.difficultyLvl >= 4 else BLACK).addButton('Menu', 'menu')

    """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.difficultyMenu.render()

    def events(self, event):
        """cette méthode gere les input du clavier et les traite en conséquence"""
        game = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_F2:
                self.difficultyLvl = 4
                self.new()
        res = self.difficultyMenu.update(event)
        if res == 'menu':
            self.main.change = 'mainMenu'
        elif res == 'e' and self.difficultyLvl >= 0:
            game = Game(self.main, self.screen, self, 0)
        elif res == 'm' and self.difficultyLvl >= 1:
            game = Game(self.main, self.screen, self, 1, column = 4, row = 4)
        elif res == 'h' and self.difficultyLvl >= 2:
            game = Game(self.main, self.screen, self, 2, column = 5, row = 5)
        elif res == 'ex' and self.difficultyLvl >= 3:
            game = Game(self.main, self.screen, self, 3, column = 6, row = 6, colors = 7)
        elif res == 'a' and self.difficultyLvl >= 4:
            game = Game(self.main, self.screen, self, 4, column = 7, row = 6, colors = 7)
        if res == 'e' or res == 'm' or res == 'h' or res == 'ex' or res == 'a':
            if game:
                self.main.getTask('game')[2] = game
                self.main.change = 'game'
Пример #5
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.settingsMenu = Menu(self.screen, self.main,
                              6).addText('Settings', 60)
     if self.biere:
         self.settingsMenu.addButton('Ball: Biere', 'v')
         if self.main.getTask('mainMenu')[2] != None:
             self.main.getTask('mainMenu')[2].new()
     else:
         self.settingsMenu.addButton('Ball: Classic', 'v')
         if self.main.getTask('mainMenu') != None:
             self.main.getTask('mainMenu')[2].new()
     self.settingsMenu.addButton('Menu', 'm')
Пример #6
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.gameModeMenu = Menu(self.screen, self.main,
                              6).addText('Game mode', 60)
     self.gameModeMenu.addButton('1 player', 'v2')
     if self.sandbox:
         self.gameModeMenu.addButton('Sandbox', 'v').addText('', 0)
     else:
         self.gameModeMenu.addButton('VS: IA', 'v')
         if self.colorMode:
             self.gameModeMenu.addButton('MultiColor: On', 'm')
         else:
             self.gameModeMenu.addButton('MultiColor: Off', 'm')
     self.gameModeMenu.addButton('Menu', 'menu')
Пример #7
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.ruleMenu = Menu(self.screen, self.main, 16)\
         .addText('Rules', 60)\
         .addText("")\
         .addText("")\
         .addText("Masterbeer is a game whose goal is to knock out the computer or the opponent (who will be representedby a bar pillar", 20)\
         .addText("in history) by making him swallow as much beer as possible. To do so, the player (s) must try to find the secret", 20)\
         .addText("combination of the opponent's different beer caps. The closer you get to the correct answer and the higher the dose of beer,", 20)\
         .addText("the further you go and the smaller it will be. The game has two game modes, a single player mode where the player’s", 20)\
         .addText("objective will be to challenge the biggest drinkers to get one of the different exotic beers over the levels which", 20)\
         .addText("will increase in difficulty to collect them. As well as a two players mode which will consist in finding the secret", 20)\
         .addText("combination before the other player, the number of beer busses is then counted for the two players for the winner.", 20)\
         .addText("Finding the combination directly wins the game and suddenly make the loser drink", 20)\
         .addText("", 20)\
         .addText("")\
         .addText("")\
         .addButton('Menu', 'm')
Пример #8
0
class RuleMenu(object):
    """docstring for RuleMenu."""

    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()

    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.ruleMenu = Menu(self.screen, self.main, 16)\
            .addText('Rules', 60)\
            .addText("")\
            .addText("")\
            .addText("Masterbeer is a game whose goal is to knock out the computer or the opponent (who will be representedby a bar pillar", 20)\
            .addText("in history) by making him swallow as much beer as possible. To do so, the player (s) must try to find the secret", 20)\
            .addText("combination of the opponent's different beer caps. The closer you get to the correct answer and the higher the dose of beer,", 20)\
            .addText("the further you go and the smaller it will be. The game has two game modes, a single player mode where the player’s", 20)\
            .addText("objective will be to challenge the biggest drinkers to get one of the different exotic beers over the levels which", 20)\
            .addText("will increase in difficulty to collect them. As well as a two players mode which will consist in finding the secret", 20)\
            .addText("combination before the other player, the number of beer busses is then counted for the two players for the winner.", 20)\
            .addText("Finding the combination directly wins the game and suddenly make the loser drink", 20)\
            .addText("", 20)\
            .addText("")\
            .addText("")\
            .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):
        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.ruleMenu.render()

    def events(self, event):
        """cette méthode gere les input du clavier et les traite en conséquence"""
        res = self.ruleMenu.update(event)
        if res == 'm':
            self.main.change = 'mainMenu'
 def new(self):
     """cette méthode sert a ajouter les bouttons et textes au menu en fonction des variables de classe dans le constructeur (difficltyLVL)"""
     if self.deja:
         self.difficultyLvl = self.main.getTask('scoreMenu')[2].bottle
         self.deja = not self.deja
     self.difficultyMenu = Menu(self.screen, self.main, 7, 2).addText('Difficulty', 60).addButton('Easy', 'e', GREEN if self.difficultyLvl >= 0 else BLACK).addButton('Medium', 'm', GREEN if self.difficultyLvl >= 1 else BLACK).addButton('Hard', 'h', GREEN if self.difficultyLvl >= 2 else BLACK).addButton('Extreme', 'ex', GREEN if self.difficultyLvl >= 3 else BLACK).addButton('Armand', 'a', GREEN if self.difficultyLvl >= 4 else BLACK).addButton('Menu', 'menu')
Пример #10
0
class GameModeMenu(object):
    """docstring for GameModeMenu."""
    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.colorMode = False
        self.sandbox = 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.gameModeMenu = Menu(self.screen, self.main,
                                 6).addText('Game mode', 60)
        self.gameModeMenu.addButton('1 player', 'v2')
        if self.sandbox:
            self.gameModeMenu.addButton('Sandbox', 'v').addText('', 0)
        else:
            self.gameModeMenu.addButton('VS: IA', 'v')
            if self.colorMode:
                self.gameModeMenu.addButton('MultiColor: On', 'm')
            else:
                self.gameModeMenu.addButton('MultiColor: Off', 'm')
        self.gameModeMenu.addButton('Menu', 'menu')

    """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.gameModeMenu.render()

    def events(self, event):
        """cette méthode gere les input du clavier et les traite en conséquence"""
        res = self.gameModeMenu.update(event)
        if res == 'menu':
            self.main.change = 'mainMenu'
        elif res == 'm':
            self.colorMode = not self.colorMode
            self.new()
        elif res == 'v':
            self.sandbox = not self.sandbox
            self.new()
Пример #11
0
class ScoreMenu(object):
    """docstring for ScoreMenu."""

    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.start = time.time()
        self.file = "./score.txt"
        self.file2 = "./bottle.txt"
        self.score = 0
        self.score = self.read_file(self.file)
        self.bottle = 0
        self.bottle = self.read_file(self.file2)
        self.new()

    def addScore(self, i = 1):
        self.score += i
        self.new()
        self.write_file()

    def addBottle(self, i = 1):
        if self.bottle + i == 6:
            return
        else:
            self.bottle += i
        self.new()
        self.write_file()

    def write_file(self):
        prev = self.read_file(self.file)
        if prev < self.score:
            with open(self.file, 'w') as fp:
                fp.write(str(self.score))
        with open(self.file2, 'w') as fp:
            fp.write(str(self.bottle))

    def read_file(self, file):
        with open(file) as fp:
            score = int(fp.read())
            return score

    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.scoreMenu = Menu(self.screen, self.main, 6).addText('High score', 60).addText(str(self.score), 40).addText('Special unlock', 50).addText('').addText('').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):
        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))
        for i in range(self.bottle):
            self.screen.blit(self.main.bottle[i], ((((WIDTH - 200) //4) + i * ((WIDTH - 200) //4)) - 150, 320))
        self.scoreMenu.render()

    def events(self, event):
        """cette méthode gere les input du clavier et les traite en conséquence"""
        res = self.scoreMenu.update(event)
        if res == 'm':
            self.main.change = 'mainMenu'
Пример #12
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.scoreMenu = Menu(self.screen, self.main, 6).addText('High score', 60).addText(str(self.score), 40).addText('Special unlock', 50).addText('').addText('').addButton('Menu', 'm')
Пример #13
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.winMenu = Menu(self.screen, self.main, 7).addText('Win', 60)
     self.winMenu.addButton('Menu', 'm')
Пример #14
0
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))