示例#1
0
    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
示例#2
0
    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
示例#3
0
文件: npcs.py 项目: ValHPLN/RPGGAME
 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
示例#4
0
    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
示例#5
0
    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)
示例#6
0
 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