def __init__(self): """Initialise le personnage """ self.sprite = None # Sprite du personnage self.compteur = 0 # Compteur animations self.frame = 0 # Numero de la frame du sprite self.direction = "bas" # Direction du personnage (bas par défaut) self.mouvement = "base" # Mouvement actuel du joueur (base = debout) self.libre = True # Si le personnage est pas occupé à faire qqch self.hitbox = col.Hitbox("joueur") # Hitbox du joueur self.hitbox_objet = col.Hitbox("objet") # Hitbox du joueur self.vie = 10 # Points de vie du personnage self.blesser = False # Si le personnage est blessé ou non # Créer un rectangle centré sur les jambes du personnage pour les collisions self.hitbox.rect = pg.Rect((0, 0), (25, 20)) self.hitbox.rect.center = (cp.centre_x, cp.centre_y+13) # Créer et assigner le hitbox self.hitbox.mask = pg.Mask((25, 20)) self.hitbox.mask.fill() # Remplir le hitbox pour créer un bloc self.channel_joueur = pg.mixer.Channel(2) # Créer un rectangle centré sur les jambes du personnage pour les collisions self.hitbox_objet.rect = pg.Rect((cp.centre_x-20, cp.centre_y+10), (32, 22)) self.hitbox_objet.rect.center = (cp.centre_x-4, cp.centre_y-11) # Créer et assigner le hitbox self.hitbox_objet.mask = pg.Mask((32, 22)) self.hitbox_objet.mask.fill() # Remplir le hitbox pour créer un bloc
def __init__(self, randomPlayer, hp): self.randomPlayer = "img/char/New/" + randomPlayer + "_run_32x32.png" self.sprite = None #initialises PLayer self.free = True #is player busy self.count = 0 self.frame = 0 self.direction = "up" self.mouvement = "base" self.hitbox = col.Hitbox("player") self.hitbox_object = col.Hitbox("object") self.health = gs.base_hp #player health self.hurt = False #player hurt state self.hitbox.rect = pg.Rect((0,0),(56,0)) #creat rect on player feet for collisions self.hitbox.rect.center = (gs.center_WIDTH, gs.center_HEIGHT+13) self.hitbox.mask = pg.Mask((25,20)) self.hitbox.mask.fill() #creat rect on player feet for collisions self.hitbox_object.rect = pg.Rect((gs.center_WIDTH - 20, gs.center_HEIGHT + 10), (32, 22)) self.hitbox_object.rect.center = (gs.center_WIDTH - 4, gs.center_HEIGHT - 11) self.hitbox_object.mask = pg.Mask((32, 22)) self.hitbox_object.mask.fill() # fills hitbox
def __init__(self,npc_type, npc_id, parametre): """ * parametre = [position, taille, type_deplacement, vie, attaque] """ Npc.nb_npc +=1 # increments npc number super(Npc, self).__init__(npc_type, npc_id, parametre) # superclass # entity settings for NPCs x, y = parametre[0] # Spawn position x += gs.map.x_camera y += gs.map.y_camera self.position = [x, y] self.taille = parametre[1] self.type_deplacement = parametre[2] self.hitbox = col.Hitbox("Npc") # NPC collisions
def charger_hitboxs(self): #creates hitboxes for map tiles for groupe in cs.groups: # goes through all groups cs.groups[groupe] = pg.sprite.Group() # reinit groups for i in range(10): #goes through matrixes for y in range(self.y): # columns for x in range(self.x): # rows if self.matrices[i][y][x] in ts.tuiles: # if tile exists in tile settings if self.matrices[i][y][x] in ts.collisions: # if collisions x_tuile = self.x_camera + x*32 # X pos y_tuile = self.y_camera + y*32 # Y pos tuile = ts.tuiles[self.matrices[i][y][x]] # Get img mask = pg.mask.from_surface(tuile) # creates mask rect = pg.Rect(x_tuile, y_tuile, 32, 32) # gets rect from img col.Hitbox("tuile", rect, mask) # saves list
def charger_hitboxs(self): """ Crée les rectangles de collisions de la map Permets de charger les rectangles de collision de la map (Peut génèrer des latences !) """ for groupe in cc.groupes: # Je parcours les groupes de collision cc.groupes[groupe] = pg.sprite.Group() # Je les réinitialise for i in range(3): # Je parcours les 3 premières couches de la map for y in range(self.y): # Parcours les colonnes for x in range(self.x): # Je parcours les lignes if self.matrices[i][y][x] in ct.tuiles: # Si la tuile existe if self.matrices[i][y][x] in ct.collisions: # Si on lui a assigné des collisions x_tuile = self.x_camera + x*32 # Position de la tuile (abscisses) y_tuile = self.y_camera + y*32 # Position de la tuile (ordonnée) tuile = ct.tuiles[self.matrices[i][y][x]] # On extrait l'image mask = pg.mask.from_surface(tuile) # On fait le mask a partir de cette image rect = pg.Rect(x_tuile, y_tuile, 32, 32) # On créé le rectangle associé a l'image col.Hitbox("tuile", rect, mask) # Sauvegarder la liste (rect + mask)
def __init__(self, type_monstre, parametre): """ * parametre = [position, taille, type_deplacement, vie, attaque] """ Monstre.nb_monstre += 1 # On augemente le nombre de monstre monstre = "monstre_" + type_monstre # Préparation du nom du monstre pour l'initialisation super(Monstre, self).__init__(monstre) # Initialisation de la superclasse # Mise en place des différents paramètres.. x, y = parametre[0] # Coordonnées relatives a la map x += cp.map.x_camera y += cp.map.y_camera self.position = [x, y] self.taille = parametre[1] self.type_deplacement = parametre[2] self.vie = parametre[3] self.attaque = parametre[4] ################ self.son = None # Le son du monstre self.hitbox = col.Hitbox("Monstre") # Les collisions du monstre