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