Utilisation methode d'une classe dans une autre classe

Fermé
titodore3 Messages postés 11 Date d'inscription samedi 23 février 2013 Statut Membre Dernière intervention 25 février 2013 - Modifié par titodore3 le 23/02/2013 à 23:21
titodore3 Messages postés 11 Date d'inscription samedi 23 février 2013 Statut Membre Dernière intervention 25 février 2013 - 25 févr. 2013 à 13:30
Bonjour,

Je vient tout juste de m'inscrire sur https://forums.commentcamarche.net/forum/

J'en viens à faire appel à vous, communauté de CCM dans le cadre d'un TFA (ravail de fin d'année). Il se fait que dans ce TFA, je me heurte à certains problèmes

Cela fait plusieurs jours que je cherche pour ce "léger" problème qui, à mon avis, possède une solution toute bête.
Donc pour l'instant je débute dans ce travail, c'est un jeu de Tower defense (Donc des tours qui doivent tuer des ennemis)


J'aimerais, dans une méthode de ma classe Tour, utiliser une méthode de la classe Ennemi (qui n'est pas liée par un héritage) afin de tirer sur cet ennemi et lui enlever des points de vie.
la méthode tirer() de la classe Tour utilise la méthode set_vie() de la classe Ennemi afin de modifier la vie , mais voila.. je ne parvient pas a utiliser la méthode.

J'ai déja demander a mon professeurs et à d'aurtes élèves et personne ne sais. Cela me bloque énormément dans mon projet.




Merci d'avance,
Titodore3

PS: Veuillez m'excuser pour la présentation, je ne suis pas très habitué aux forums alors je suis ouvert à vos conseils^^'


Voici mes 3 fichiers

from Tour import* 
from Ennemi import* 


tour1=Tour("air",10,10,10,10,10,10)# cree une tour air 
ennemi1=Ennemi("air",50,50,50,250,50) 
print("l'ennemi a ",ennemi1.get_vie(),"pv") 

tour1.tirer()#ligne a laquelle j'aimerais tirer et enlever X points à un ennemi 
print("l'ennemi a ",ennemi1.get_vie(),"pv") 


#creer la fenetre graphique 

#placer l'image correspondant au niveau 

# placer tout les menus 



Fichier 2

class Ennemi: 
    "cree et manipule un ennemi" 


    def __init__(self,typage,vitesse,valeur_score,butin,vie,direction): 
        "initialise l'ennemi avec ses attributs" 

         
        ######intialisation des variables##### 
        self.vitesse=vitesse 
        self.typage=typage 
        self.valeur_score=valeur_score 
        self.vie=vie 
        self.butin=butin 
        self.direction=direction 
         
        ###### 


                # //\\Placer la tour sur la fenetre de jeu a une position precise 
        # et des attributs precis 

###### methodes GET ## 

    def get_vitesse(self): 
        return self.vitesse 


    def get_typage(self): 
        return self.typage 


    def get_valeur_score(self): 
        return self.valeur_score 


    def get_butin(self): 
        return self.butin 

    def get_vie(self): 
        return self.vie 


    def get_direction(self): 
        return self.direction 
     



        

     

##### methodes set ### 

    def set_vitesse(self,vitesse): 
        self.vitesse=vitesse 


    def set_typage(self,typage): 
        self.typage=typage 


    def set_valeur_score(self,valeur_score): 
        self.valeur_score=valeur_score 


    def set_butin(self,butin): 
        self.butin=butin 

    def set_vie(self,vie): 
        self.vie=vie 


    def set_direction(self,direction): 
        self.direction=direction 
     



      



###### autres methodes ### 

     

     

     
         
     

         


Fichier 3


from Ennemi import* 




class Tour: 
    "cree et manipule une tour. lorsque l'utilisateur cliquera sur par ex" 
    "tour1, on instanciera une tour avec les attributs specifiques a  tour1" 
    "( dans la base de donnees)" 
    nb_tours=0 
     


    def __init__(self,typage,portee,vitesse,cout,degats_min,degats_max,vente): 
        "initialise la tour avec ses attributs" 

         
        ######intialisation des variables##### 
        self.typage=typage 
        self.portee=portee 
        self.vitesse=vitesse 
        self.cout=cout 
        self.degats_min=degats_min 
        self.degats_max=degats_max 
        self.vente=vente 
        ###### 

       # retire l'argent au joueur 
        #joueur.set_argent_actuel(-(self.cout))  
         
         

        # //\\Placer la tour sur la fenetre de jeu a une position precise 
        # et des attributs precis 

###### methodes get ### 
    def get_typage(self): 
        return self.typage 


    def get_portee(self): 
        return self.portee 


    def get_vitesse(self): 
        return self.vitesse 


    def get_cout(self): 
        return self.cout 


    def get_degats_min(self): 
        return self.degats_min 


    def get_degats_max(self,): 
        return self.degats_max 


    def get_vente(self): 
        return self._vente 






##### methodes set ### 


    def set_typage(self,typage): 
        self.typage=typage 
         

    def set_portee(self,portee): 
        self.portee=portee 


    def set_vitesse(self,vitesse): 
        self.vitesse=vitesse 


    def set_cout(self,cout): 
        self.cout=cout 


    def set_degats_min(self,degats_min): 
        self.degats_min=degats_min 


    def set_degats_max(self,degats_max): 
        self.degats_max=degats_max 


    def set_vente(self,vente): 
        self._vente=vente 



###### autres methodes ### 


         
    def achat(self): 
       joueur.set_argent_actuel(self.vente) 

    def tirer(self): 
        ennemi1.set_vie(-10) 
         

    def cible(self): 
        pass 

    def portee(self): 
        pass 
         
         
         


    #def tirer(self,ennemi_vise): 
       # "en attribut: l'identifiant de l'ennemi vise" 
         
        #ennemi_vise.set_vie(-(self.degats_min)) 

     
    #vente=property(get_vente,set_vente) 




1 réponse

titodore3 Messages postés 11 Date d'inscription samedi 23 février 2013 Statut Membre Dernière intervention 25 février 2013
25 févr. 2013 à 13:30
J'ai trouvé réponse à ma question via un autre forum

je cite :
"



tirer prend en paramètre un ennemi, donc sans regarder tout le code je dirais un truc du genre tour1.tirer(ennemi1)

"




"

Dans le programme principal, il faut mettre :

1
tour1.tirer(ennemi1) #ligne a laquelle j'aimerais tirer et enlever X points a un ennemi
Dans la classe Tour :

1
2
def tirer(self,mechant):
mechant.recoit_coup(10)
Et dans la classe Ennemi :

1
2
def recoit_coup(self,coup):
self.vie -= coup
"
0