예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
    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
예제 #4
0
	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 = []
예제 #5
0
    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
예제 #6
0
    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
예제 #7
0
    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"]
예제 #8
0
    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
예제 #9
0
    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"]
예제 #10
0
    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()
예제 #11
0
 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
예제 #12
0
    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
예제 #13
0
    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
예제 #14
0
    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)
예제 #15
0
    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)
예제 #16
0
    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()
예제 #17
0
    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
예제 #18
0
    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
예제 #19
0
    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)