Example #1
0
 def __init__(self, ecran):
     if not Ecran.largeur and not Ecran.hauteur:
         Ecran.largeur, Ecran.hauteur = ecran.get_width(), ecran.get_height()
         super(Ecran, self).__init__((Ecran.largeur, Ecran.hauteur))
         self.__affichage = Affichage()
     else:
         raise RuntimeError('Un écran a déjà été créé.')
Example #2
0
 def affichage(self, ecran):
     if self.__temps_restant > 0:
         sous_sprite = self.__sprite.subsurface(self.__animation.recuperer_image())
         sous_sprite_rect = sous_sprite.get_rect()
         sous_sprite_rect.x, sous_sprite_rect.y = self.__rect.x, self.__rect.y
         ecran.blit(pygame.transform.flip(sous_sprite, self.__deplacement[0] < 0, False), sous_sprite_rect)
     else:
         Affichage().supprimer(self)
Example #3
0
    def __init__(self):
        self.__chemins = [
            f.split('.')[0] for f in listdir(CHEMIN_MAP)
            if isfile(join(CHEMIN_MAP, f))
        ]

        self.__max_x = 0
        self.__carte = []
        self.generer_carte()

        Affichage().enregistrer(self)
        Maj().enregistrer(self)
Example #4
0
class Ecran(pygame.Surface):
    decalage = pygame.Vector2()
    x, y = 0, 0
    largeur, hauteur = None, None

    def __init__(self, ecran):
        if not Ecran.largeur and not Ecran.hauteur:
            Ecran.largeur, Ecran.hauteur = ecran.get_width(), ecran.get_height()
            super(Ecran, self).__init__((Ecran.largeur, Ecran.hauteur))
            self.__affichage = Affichage()
        else:
            raise RuntimeError('Un écran a déjà été créé.')

    @staticmethod
    def deplacement(x, y):
        Ecran.x, Ecran.y = x, y

    @staticmethod
    def get_droite():
        return Ecran.x + Ecran.largeur

    @staticmethod
    def get_bas():
        return Ecran.y + Ecran.hauteur

    @staticmethod
    def reinitialiser():
        Ecran.x, Ecran.y = 0, 0

    def affichage(self, ecran):
        self.fill(FOND)
        self.__affichage.maj(self)
        ecran.blit(self, (0, 0))

    def blit(self, source, dest, area=None, special_flags=0):
        new_dest = (dest[0] - Ecran.x, dest[1] - Ecran.y)
        super(Ecran, self).blit(source, new_dest, area, special_flags)

    def blit_absolu(self, source, dest, area=None, special_flags=0):
        super(Ecran, self).blit(source, dest, area, special_flags)
Example #5
0
    def __init__(self, positions, deplacement, couleur_joueur, vitesse=400, duree=3):
        self.__couleur_joueur = couleur_joueur
        self.__sprite = Images().charger_image(self.CHEMIN_SPRITE + 'Tornade.png')
        self.__rect = self.__sprite.get_rect()
        self.__rect.x, self.__rect.y = positions
        self.__deplacement = deplacement
        self.__vitesse = vitesse
        self.__animation = Animation(0, 0, Tornade.TAILLE_IMAGE[0], Tornade.TAILLE_IMAGE[1], 4, duree / 12)
        self.__temps_restant = duree

        Sons().jouer_son('Tornade', 'wav', math.ceil(duree/3) - 1, duree)  # Avec 3 la duree du sons
        Affichage().enregistrer(self, 1)
        Maj().enregistrer(self)
Example #6
0
    def __init__(self, touches, couleur, nb_coeurs):
        # Private
        Joueur.__count += 1
        self.__attente_releve = False
        self.__vies = nb_coeurs
        self.__sprite = Images().charger_image(
            f'{CHEMIN_SPRITE}dino-{couleur}.png')
        self.__hud = HudVie(self.__vies, couleur)
        self.__rect = self.__sprite.get_rect()
        self.__rect.y = HAUTEUR - TAILLE_PERSO[1]
        self.__vitesse = 300
        self.__deplacement = [0, 0]
        self.__boost = 0
        self.__velocite_saut, self.vitesse_chute = 2, 4
        self.__nb_saut_restant = 1
        self._subit_tornade = -1
        self.__accroupi = False
        self.__anim_attente = Animation(0, 0, TAILLE_PERSO[0], TAILLE_PERSO[1],
                                        4, 0.2)
        self.__anim_deplacement = Animation(4, 0, TAILLE_PERSO[0],
                                            TAILLE_PERSO[1], 6, 0.13)
        self.__anim_attaque = Animation(10, 0, TAILLE_PERSO[0],
                                        TAILLE_PERSO[1], 3, 0.2)
        self.__anim_degat = Animation(13, 0, TAILLE_PERSO[0], TAILLE_PERSO[1],
                                      4, 0.2, False, 0.5)
        self.__anim_accroupi = Animation(18, 0, TAILLE_PERSO[0],
                                         TAILLE_PERSO[1], 6, 0.2)
        self.__anim_active = self.__anim_attente

        # Protected
        self._touches = touches
        self._couleur = couleur

        evenement = Evenement()
        evenement.enregistrer(pygame.KEYDOWN, self)
        evenement.enregistrer(pygame.KEYUP, self)
        Affichage().enregistrer(self, 1)
        Maj().enregistrer(self)
Example #7
0
 def fin(self):
     self.__hud.fin()
     Joueur.__count = 0
     Evenement().supprimer(self)
     Affichage().supprimer(self)
     Maj().supprimer(self)
Example #8
0
 def fin(self):
     Affichage().supprimer(self)
     Maj().supprimer(self)
Example #9
0
    def __init__(self, nom_json, x, y, taille):
        fichier_json = open(f'res/blocs/{nom_json}.json')
        self.__donnees = json.load(fichier_json)
        self.__sprite = Images().charger_image('res/img/Tileset.png')
        self._x = x
        self._y = y
        self.__z = self.__donnees['z'] if 'z' in self.__donnees.keys() else 0
        self.__taille = taille
        self._dessin = None
        self.__animation = None

        if all(cle in self.__donnees for cle in ['animation', 'temps-animation']):
            self.__animation = Animation(self.__donnees['x'], self.__donnees['y'], self.__donnees['largeur'],
                                         self.__donnees['hauteur'], self.__donnees['animation'],
                                         self.__donnees['temps-animation'])
            direction = self.__donnees['direction']
            if direction == 'x':
                self.__direction = [1, 0]
                self.__largeur = self.__donnees['largeur'] * taille
                self.__hauteur = self.__donnees['hauteur']
            else:
                self.__direction = [0, 1]
                self.__largeur = self.__donnees['largeur']
                self.__hauteur = self.__donnees['hauteur'] * taille
            Maj().enregistrer(self)
        else:
            fin_debut = 0
            fin_milieu = 0
            taille_milieu = 0

            if self.__donnees['direction'] == 'x':
                largeur = 0
                for debut in self.__donnees['debut']:
                    largeur += debut['largeur']
                fin_debut = largeur
                for milieu in self.__donnees['milieu']:
                    taille_milieu += milieu['largeur']
                largeur += taille_milieu * self.__taille
                fin_milieu = largeur
                for fin in self.__donnees['fin']:
                    largeur += fin['largeur']

                hauteur = self.__donnees['debut'][0]['hauteur']
            elif self.__donnees['direction'] == 'y':
                largeur = self.__donnees['debut'][0]['largeur']

                hauteur = 0
                for debut in self.__donnees['debut']:
                    hauteur += debut['hauteur']
                fin_debut = largeur
                for milieu in self.__donnees['milieu']:
                    taille_milieu += milieu['hauteur']
                    hauteur += taille_milieu * self.__taille
                    fin_milieu = largeur
                for fin in self.__donnees['fin']:
                    hauteur += fin['hauteur']
            else:
                largeur = self.__donnees['debut'][0]['largeur']
                hauteur = self.__donnees['debut'][0]['hauteur']

            self.__taille = taille
            nom_cache = f'{nom_json}|{taille}'
            if nom_cache not in Bloc.DESSINS:
                self.__init_dessin(largeur, hauteur, fin_debut, fin_milieu, taille_milieu)
                Bloc.DESSINS[nom_cache] = self._dessin
            else:
                self._dessin = Bloc.DESSINS[nom_cache]
            self.__largeur = self._dessin.get_width()

        Affichage().enregistrer(self, self.__z)