Partage
  • Partager sur Facebook
  • Partager sur Twitter

Methodes classes

Utilisation methode d'une classe dans une autre classe

    24 février 2013 à 14:56:51

    Bonjour,   

    Je vient tout juste de m'inscrire sur SdZ

    J'en viens à faire appel à vous, communauté de SdZ 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, 

    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)  
    
    
    
    
     

    -
    Edité par debackerchristophe 24 février 2013 à 14:59:12

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      24 février 2013 à 17:40:57

      tirer prend en paramètre un ennemi, donc sans regarder tout le code je dirais un truc du genre tour1.tirer(ennemi1)
      • Partager sur Facebook
      • Partager sur Twitter
        24 février 2013 à 18:03:06

        Je suis d'accord avec fred1599.

        Dans le programme principal, il faut mettre :

        tour1.tirer(ennemi1) #ligne a laquelle j'aimerais tirer et enlever X points a un ennemi 

        Dans la classe Tour :

            def tirer(self,mechant):
                mechant.recoit_coup(10) 
        

        Et dans la classe Ennemi :

            def recoit_coup(self,coup):
                self.vie -= coup
        





        • Partager sur Facebook
        • Partager sur Twitter
          25 février 2013 à 13:16:52

          Tout d'abords, merci de répondre à mon message , je suis super content ^^'

          @fred1599: Tout le programme y est( oui c'est le tout tout début) et je bloque sérieusement.

          J'essaye de suite vos réponses .

          • Partager sur Facebook
          • Partager sur Twitter
            25 février 2013 à 13:27:23

            ça marche ! Je vous remercie beaucoup tout les deux, comme je m'en doutais c'étais tout bête.

            Je vais laisser un suivit de mon projet dans ce sujet comme ca je pourrais peut-être poser d'autres question si j'en ai et que vous êtes d'humeur à y répondre ^^'

            • Partager sur Facebook
            • Partager sur Twitter
              25 février 2013 à 13:42:19

              Par contre dans ton code, tu peux virer tous tes getters et tes setters : ils ne font aucune vérification ni rien de plus qu'une assignation directe, donc ils ne servent à rien si ce n'est alourdir ton code.

              • Partager sur Facebook
              • Partager sur Twitter
              Zeste de Savoir, le site qui en a dans le citron !

              Methodes classes

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown