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éé.')
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)
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)
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)
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)
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)
def fin(self): self.__hud.fin() Joueur.__count = 0 Evenement().supprimer(self) Affichage().supprimer(self) Maj().supprimer(self)
def fin(self): Affichage().supprimer(self) Maj().supprimer(self)
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)