def __init__(self, position, dimension): super().__init__(position, dimension) Personnage.liste.add(self) dim = dimension[1] #recupere la dimension du personnage dim = int(dim) #transforme la dimension en nombre entier self.dimension = ( dim, dim) # recree la dimension du personnage sous forme (x,y) self.speed = config.getConfig()["vitesse"] #vitesse du personnage self.image_b = config.getImage("personnage b") #image du personnage self.image_b = pygame.transform.scale( self.image_b, self.dimension) #redimensionne l'image du personnage self.image_h = config.getImage("personnage h") #image du personnage self.image_h = pygame.transform.scale( self.image_h, self.dimension) #redimensionne l'image du personnage self.image_d = config.getImage("personnage d") #image du personnage self.image_d = pygame.transform.scale( self.image_d, self.dimension) #redimensionne l'image du personnage self.image_g = config.getImage("personnage g") #image du personnage self.image_g = pygame.transform.scale( self.image_g, self.dimension) #redimensionne l'image du personnage self.image = self.image_b self._notif = None # creation des futures notification pour le personnage
def action(self, cible=None): self.statut = not self.statut ''' Si on a plusieurs cibles ...''' if type(self.cible) == type([]): for cible in self.cible: cible.action() if self.statut: # Image -> position on self.image = config.getImage("interrupteur on") self.image = pygame.transform.scale( self.image, self.dimension) self._frame_time = self.frame_activation # On active le timer if not self.statut: # Image -> position off self.image = config.getImage("interrupteur") self.image = pygame.transform.scale( self.image, self.dimension) self._frame_time = 0 # remise a 0 du timer elif self.cible: if self.statut: # Image -> position on self.image = config.getImage("interrupteur on") self.image = pygame.transform.scale(self.image, self.dimension) self._frame_time = self.frame_activation # On active le timer if not self.statut: # Image -> position off self.image = config.getImage("interrupteur") self.image = pygame.transform.scale(self.image, self.dimension) self._frame_time = 0 #remise a 0 du timer
def __init__(self, position, dimension, interrupteur=[]): super().__init__(position, dimension) PorteInterrupteur.liste.add(self) self.image = config.getImage("porte") self.image = pygame.transform.scale(self.image, dimension) self.interrupteur = interrupteur #donnes les infos des interrupteurs liés
def select_case_info(self, type_case, cible=None): ''' Modifie les infos de la case séléctionnée''' if not cible: cible = [] ''' Change le texte et l'image ''' self.widg_label_case.change_text(text=type_case) self.widg_image_case.change_image(image=config.getImage(type_case)) ''' On détruit tout les anciens widget de paramètre, dans le doute ''' if self.widg_button_cible: self.widg_button_cible.kill() ''' On va créer les widget de pramètre correspondant à la case ''' if type_case == "porte": self.widg_label_param.change_text(text="- Porte reliée à ({}) mécanisme(s).".format(len(cible))) self.widg_button_cible = widget.Button((10, 70), size=(200, 30), text="Selectionner cibles", action=(self.change_mode, "selection cible"), hoover_color=(200, 200, 255), centered=True, frame=self.frame2) self.case_selection_cible = cible elif type_case in ["interrupteur", "interrupteur timer"]: self.widg_label_param.change_text(text="- Interrupteur reliée à ({}) mécanisme(s).".format(len(cible))) self.widg_button_cible = widget.Button((10, 70), size=(200, 30), text="Selectionner cibles", action=(self.change_mode, "selection cible"), hoover_color=(200, 200, 255), centered=True, frame=self.frame2) self.case_selection_cible = cible elif type_case == "pic interrupteur": self.widg_label_param.change_text(text="- Pic reliée à ({}) mécanisme(s).".format(len(cible))) self.widg_button_cible = widget.Button((10, 70), size=(200, 30), text="Selectionner cibles", action=(self.change_mode, "selection cible"), hoover_color=(200, 200, 255), centered=True, frame=self.frame2) self.case_selection_cible = cible else: self.widg_label_param.change_text(text="Aucun(s) paramètre(s)") self.case_selection_cible = []
def __init__(self, position, dimension): super().__init__(position, dimension) Mur.liste.add(self) self.image = config.getImage("mur") #recuperation de l'image du mur self.image = pygame.transform.scale(self.image, dimension) #redimension de l'image
def __init__(self, application, score): ''' Destruction préventive des widget precedant (comme les notif) ''' for widg in widget.Widget.group: widg.kill() record_score = self.meilleur_score(score) score = str(score) width = 200 height = 50 x = taille_ecran[0] / 2 - (width / 2) y = taille_ecran[1] / 3 - (height / 2) self.widg_rejouer = widget.Button( (x, y), size=(width, height), text="REJOUER", action=application.jeu, font="Razer Regular", centered=True, police=26, bold=True, hoover_color=(0, 255, 0)) # Bouton "REJOUER" self.widg_menu = widget.Button( (x, 2 * y), size=(width, height), text="MENU", action=application.menu, font="Razer Regular", centered=True, police=26, bold=True, hoover_color=(255, 0, 0)) # Bouton "MENU" self.widg_score = widget.Label( (0.75 * x, 1.4 * y), size=(2 * width, height), text="Score de la partie: " + score, text_color=(200, 200, 200), font="Razer Regular", centered=True, police=26, bold=False, color=(0, 0, 0, 0)) # affichage du score self.widg_record = widget.Label( (0.75 * x, 1.6 * y), size=(2 * width, height), text="Meilleur score: " + record_score, text_color=(200, 200, 200), font="Razer Regular", centered=True, police=26, bold=False, color=(0, 0, 0, 0)) # affichage du score fond = config.getImage( "fond game over") # recuperation de l'image du fond menu fond = pygame.transform.scale(fond, taille_ecran) # redimension de l'image pygame.display.get_surface().blit(fond, (0, 0)) # on colle le fond
def __init__(self, position, dimension): super().__init__(position, dimension) Bonus.liste.add(self) self.image = config.getImage("bonus") self.image = pygame.transform.scale(self.image, dimension) self.hitbox = self.rect.copy() self.bonus = config.getConfig()["bonus"]
def __init__(self, position, dimension): super().__init__(position, dimension) Escalier.liste.add(self) self.image = config.getImage("fin") self.image = pygame.transform.scale(self.image, dimension) self.hitbox = self.rect.copy() self.statut = False #True => fin du niveau
def __init__(self, position, dimension): super().__init__(position, dimension) Lave.liste.add(self) self.image = config.getImage("lave") self.image = pygame.transform.scale(self.image, dimension) self.hitbox = self.rect.copy() self.degat = config.getConfig()["degat_lave"]
def update(self): ''' A chaque frame, on decroit le compteur si besoin ''' if self._frame_time: self._frame_time -= 1 ''' Quand timer à 0: On met à jour l'image et l'etat du pic ''' if not self._frame_time: if self.hitbox: self.image = config.getImage("pic off") self.image = pygame.transform.scale(self.image, self.size) self.hitbox = None #desactive la hitbox (pour plus avoir de degats) else: self.image = config.getImage("pic") self.image = pygame.transform.scale(self.image, self.size) self.hitbox = self.rect.copy() #reactive la hitbox self._frame_time = self.frame_activation #reset du timer super().update()
def action(self, cible): ''' Ajoute un bonus ''' if cible: for objet in cible: objet.bonus(self.bonus) ''' On fait ensuite "disparaître" le bonus ''' self.hitbox = None self.image = pygame.transform.scale( config.getImage("sol"), self.size) #remplace par une case de sol
def __init__(self, position, dimension): super().__init__(position, dimension) Pic.liste.add(self) self.image = config.getImage("pic") self.image = pygame.transform.scale(self.image, dimension) self.hitbox = self.rect.copy() self.degat = config.getConfig()[ "degat_pics"] #definition des degats des pics
def action(self, cible=None): ''' Ouvre ou ferme la porte''' if type(self.interrupteur) == type( []): # Si on a plusieurs interrupteurs .... all_activated = True for interrupteur in self.interrupteur: #si tout ne sont pas activé alors all_activated est faux if not interrupteur.statut: all_activated = False if all_activated: # on regarde s'ils sont tous activés et on ouvre la porte if not self.statut: # Image -> position ouverte self.image = config.getImage("sol") self.image = pygame.transform.scale(self.image, self.size) self.statut = True else: #sinon on la ferme if self.statut: # Image -> position fermée self.image = config.getImage("porte") self.image = pygame.transform.scale(self.image, self.size) self.statut = False
def action(self, cible=None): ''' Ouvre ou ferme les pics''' if not cible: if type(self.interrupteur) == type( []): # Si on a plusieurs interrupteurs .... all_activated = True for interrupteur in self.interrupteur: #si tout ne sont pas activé alors all_activated est faux if not interrupteur.statut: all_activated = False if all_activated: # on regarde s'ils sont tous activés et on desactive les pics self.image = config.getImage("pic off") self.image = pygame.transform.scale(self.image, self.size) self.hitbox = None #desactive la hitbox (pour plus avoir de degats) else: self.image = config.getImage("pic") self.image = pygame.transform.scale(self.image, self.size) self.hitbox = self.rect.copy() #reactive la hitbox super().action(cible)
def action(self, cible=None): '''Fait les action lié a son activation''' self.statut = not self.statut ''' Si on a une liste de cible ...''' if type(self.cible) == type([]): for cible in self.cible: cible.action() #fait l'action de l'objet lié if self.statut: # Image -> position on self.image = config.getImage("interrupteur on") self.image = pygame.transform.scale( self.image, self.dimension) if self.statut == False: # Image -> position off self.image = config.getImage("interrupteur") self.image = pygame.transform.scale( self.image, self.dimension) elif self.cible: self.cible.action() self.image = config.getImage( "interrupteur") # Image -> position off self.image = pygame.transform.scale(self.image, self.dimension)
def __init__(self, position, dimension, cible=None): super().__init__(position, dimension) Interrupteur.liste.add(self) self.dimension = dimension self.image = config.getImage("interrupteur") self.image = pygame.transform.scale(self.image, dimension) self.cible = cible #permet de donner l'objet qu'il active self.statut = False #False => interrupteur non activé self.hitbox = self.rect.copy()
def __init__(self, application): ''' Destruction préventive des widget precedant (comme les notif) ''' for widg in widget.Widget.group: widg.kill() record_score = self.meilleur_score_menu() width = 200 height = 50 x = taille_ecran[0] / 2 - (width / 2) y = taille_ecran[1] / 3 - (height / 2) self.widg_jouer = widget.Button( (x, y), size=(width, height), text="JOUER", action=application.jeu, font="Razer Regular", centered=True, police=24, bold=True, hoover_color=(0, 255, 0)) # Bouton "JOUER" self.widg_quitter = widget.Button( (x, 2 * y), size=(width, height), text="QUITTER", action=application.quitter, font="Razer Regular", centered=True, police=24, bold=True, hoover_color=(255, 0, 0)) # Bouton "QUITTER" self.widg_record = widget.Label( (x, 1.5 * y), size=(width, height), text="Meilleur score: " + record_score, text_color=(255, 255, 255), font="Razer Regular", centered=True, police=26, bold=True, color=(255, 255, 255, 0)) # affichage du score fond = config.getImage( "fond menu") # recuperation de l'image du fond menu fond = pygame.transform.scale(fond, taille_ecran) #redimension de l'image pygame.display.get_surface().blit(fond, (0, 0)) # on colle le fond
def __init__(self): self.dimension = (config_info["taille_HUD"], config_info["taille_level"] ) #creer les dimension de l'hud self.largeur = config_info["taille_HUD"] #donne la largeur de l'hud self.position = ( config_info["taille_level"], 0 ) #donne la position haute gauche de l'hud (en bord de niveau à droite) self.taille_level = config_info[ "taille_level"] #recupere la taille de l'evel self.image = config.getImage("hud") #recupere l'image de l'hud self.image = pygame.transform.scale( self.image, self.dimension ) #redimensionne l'image (uniquement en cas de changement de taille de la fenetre) self.rect_hud = self.image.get_rect() self.rect_hud.topleft = (config_info["taille_level"], 0 ) #permet l'affichage de l'hud self.widg_temps = widget.Label( ((self.taille_level + (self.largeur / 160) * 22), (self.taille_level / 800) * 227), size=(112, 36), color=(0, 0, 0, 0), text="temps", text_color=(255, 255, 255), centered=True, police=20, bold=True) #texte du temps self.widg_score = widget.Label( ((self.taille_level + (self.largeur / 160) * 22), (self.taille_level / 800) * 382), size=(112, 36), color=(0, 0, 0, 0), text="score", text_color=(255, 255, 255), centered=True, police=20, bold=True) #texte du score
def __init__(self, position, dimension): super().__init__(position, dimension) SolSpawn.liste.add(self) self.image = config.getImage("spawn") self.image = pygame.transform.scale(self.image, dimension)