Comparer les résultats de 2 dés

EdFull Messages postés 10 Statut Membre -  
 Utilisateur anonyme -
Bonjour à tous ! Je me permet d’écrire sur ce forum pour vous faire part de mes difficultés en code. En effet, j’ai un projet à réalisé pour mes études et je débute dans la programmation donc j’aurai besoin d’un petit peu coup de pouce.

Donc voilà le but de mon projet est de réaliser un jeu en Programmation orientée objet dans le langage Python.

Ce jeu se base sur la chance. Je m’explique, un joueur et un monstre vont « s’affronter » à l’aide de tirages de dés. En effet, celui ayant le plus grand nombre remporte le combat.
Par exemple, si le joueur lance le dé et obtient le chiffre « 8 » tandis que le monstre lui obtient le chiffre « 6 » alors le monstre perd de la vie. Même chose pour le joueur.

Je tiens à préciser que je n’ai pas inventé ce jeu, je l’ai trouvé sur un autre site : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818991-tp-creez-un-petit-jeu-oriente-objet

-> Sur ce dernier les explications sont plus complètes et largement plus poussées.

Mon post s’adresse ainsi à ceux qui seraient retranscrire ce programme codé en C en programme codé en Python.

Ou alors, à ceux qui seraient m'aider là ou je suis rendu. En effet, à partir de ce stade là je n'ai créé que les deux classes "joueur" et "MonstreFacile" et je rencontre un problème.
Au moment du lancé de dé j'aimerai que les deux tirages (celui du joueur et du monstre") se comparent, problème je ne vois pas comment faire. J'ai pourtant essayer (avec une fonction combat) mais sans succès.

Pour vous donner un exemple plus concret:
"Le Joueur a tiré le chiffre 8", "Le monstre a tiré le chiffre 4" le joueur enlève alors des points de vies au monstre.

Voici mon code :
from random import*

class joueur():

    def __init__(self, NbreDeVie, NomDuPerso):
        self.vie=NbreDeVie
        self.nom=NomDuPerso

    def afficheEtat (self):
        print ("Il reste "+str(self.vie)+ " points de vie à " +self.nom)
        if self.vie == 0:
            print("Mario n'a plus de vie")

    def attaque (self):
        print(self.nom+ " veut attaquer "+ "monstre")


    def SubitDegats (self):
        print(self.nom + " subit des dégats de la part de " + "monstre" + " !")
        self.vie=self.vie-1

    def LanceleDe (self):
        self.LanceleDe
        tirage = randint(1,6)
        print(tirage)


Mario= joueur(150, "Mario")

#print(Mario.SubitDegats())

print("Le nombre tiré par notre joueur est")
print(Mario.LanceleDe())

#----------------------------

class MonstreFacile():

    def __init__(self,NbredeVie,NomduPerso): # on définit la méthode qui va initialiser les attributs
        self.vie=NbredeVie
        self.nom=NomduPerso


    def afficheEtat(self): #voici la méthode qui affiche l'état du personnage
        print ('Il reste '+str(self.vie)+' points de vie')

#OBJECTIF : Créer une méthode qui enlèvera un point de vie au personnage blesse, une méthode qui affichera le nombre de vies restantes

    def SubitDegats (self):#voici la méthode qui fait perdre 1 point de vie au personnage qui a subit une attaque
        print(self.nom + " subit des dégats de la part de " + "monstre" + " !")
        self.vie=self.vie-1


    def LanceleDe(self):
        self.LanceleDe
        tirage = randint(1,6)
        print(tirage)


# on crée une instance de la classe personnage nommée Bowser (plus d'indentation, car la définition de la classe est terminée)

Bowser=MonstreFacile(20,'Bowser') ##on crée l'instance Bowser sans oublier de passer le nombre de points de vie et le nom du personnage


print("Le nombre tiré par le monstre est")
print(Bowser.LanceleDe())

def combat(self):

    if Mario.LanceleDe >= Bowser.LanceleDe:
        Bowser.SubitDegats


Si jamais je n'ai pas été assez claire, n'hésitez pas à me le dire, en espérant que quelqu'un puisse m'aider !

Je vous remercie d'avance pour avoir pris le temps de lire ce post, passez tous une bonne journée !

9 réponses

  1. Utilisateur anonyme
     
    Bonsoir

    tout d'abord, un "petit" correctif, le langage C ne connait l'objet.
    Le cours dont tu parles est un cours de C#, un lointain "descendant" de C.

    Et "copier" un tutoriel, c'est pas tout à fait un travail personnel.

    Bon revenons à ta question

    en gros ton code
    #code de la classe joueur
    
    Mario= joueur(150, "Mario")
    
    print("Le nombre tiré par notre joueur est")
    print(Mario.LanceleDe())
    
    #code de la classe Monstre
    
    Bowser=MonstreFacile(20,'Bowser') ##on crée l'instance Bowser sans oublier de passer le nombre de points de vie et le nom du personnage
    
    
    print("Le nombre tiré par le monstre est")
    print(Bowser.LanceleDe())
    
    # début de la fonction Combat
    


    Déjà, y'a une définition, puis un peu de "code à exécuter", puis une seconde définition et encore un peu "code à exécuter" et encore une définition.

    Il serait judicieux de regrouper les définition, puis de dérouler le jeu.
    C'est plus clair et donc plus simple à écrire, débbogger, maintenir.

    Quand on exécute, ça affiche par exemple
    Le nombre tiré par notre joueur est                                                                                                                                                  
    3                                                                                                                                                                                    
    None                                                                                                                                                                                 
    Le nombre tiré par le monstre est                                                                                                                                                    
    2                                                                                                                                                                                    
    None
         


    Sachant que le combat n'a pas commencé... puisque la fonction n'est pas appelée

    Il me semble logique que les tirages de dé se fassent dans la fonction combat.

    Un truc comme ça

    def combat(Joueur, Monstre):
        print("Le nombre tiré par notre joueur est")
        print(Joueur.LanceleDe())
        
        print("Le nombre tiré par le monstre est")
        print(Monstre.LanceleDe())
    
    
    Bowser=MonstreFacile(20,'Bowser')
    Mario= joueur(150, "Mario")
    combat(Mario, Bowser)
    


    C'est mieux rangé, et on a toujours un affichage du même type
    Le nombre tiré par notre joueur est                                                                                                                                                  
    3                                                                                                                                                                                    
    None     #C'est quoi ce none?                                                                                                                                                                            
    Le nombre tiré par le monstre est                                                                                                                                                    
    2                                                                                                                                                                                    
    None    #C'est quoi ce none?        
         


    A ton avis d'où viennent les "none"?
    Dans la fonction Combat, comment pourras tu comparer les lancés de dé?
    0
    1. EdFull Messages postés 10 Statut Membre
       
      Bonsoir, comme je vous l’ai dit je débute dans la programmation donc je m’excuse si mon programme est un peu « en vrac ». En suite, j’ai fait une petite erreur, effectivement c’est bien du C# et non du C merci de me le faire remarqué !

      De plus, mon but n’est pas de copier le travail de quelqu’un d’autre mais d’essayer de le refaire dans un autre langage. Le projet de la personne propose quelque chose d’assez complet qui reprend plusieurs notions de mon cours. J’ai donc trouvé intéressant de m’en servir pour en apprendre plus sur la programmation et ainsi progresser.

      Pour en revenir au programme, il est vrai qu’il est judicieux de tout regrouper de la sorte merci pour votre conseil. En suite, j’ai moi aussi trouvé dérangeant ces « none » et je pense savoir pourquoi ces derniers apparaissent. En effet, c’est parce qu’il manque un « return » à ma fonction. Problème je ne vois pas comment l’intégrer, je pense qu’il me manque également une variable dans ma fonction. Ensuite, pour ce qui de la comparaison des lancés de dé je ne vois que la possibilité d’employer un « if ».

      J’ai effectué ceci pour l’instant :

      def combat(Joueur, Monstre):
      print("Le nombre tiré par notre joueur est")
      print(Joueur.LanceleDe())
      return Joueur

      DeMonstre = "LanceleDe"
      print("Le nombre tiré par le monstre est")
      print(Monstre.LanceleDe())
      return DeMonstre

      if DeJoueur >= DeMonstre:
      Bowser.SubitDegats



      Bowser=MonstreFacile(20,'Bowser')
      Mario= joueur(150, "Mario")
      combat(Mario, Bowser)


      Malheureusement, ça ne marche pas et je ne vois pas vraiment comment faire :/.

      En tout cas à ce stade, si j’ai bien compris et que j’ai raison, pour l’affiche des « none » je suis content ! Ces derniers me dérangeaient !

      Au passage, merci de prendre du temps pour m’aider, c’est vraiment gentil !
      0
  2. Utilisateur anonyme
     
    En effet, il te manque des return quelque part.

    Mais pas dans la fonction Combat.

    Le mot clé return a 2 effets:
    • il stoppe l'exécution du bloc de code dans lequel il se trouve (une fonction en général)
    • il transmet un résultat à la ligne de code ayant appelé sa fonction


    Problème n°1 => on ne veut pas de none
    Problème n°2 => on veut récupérer les lancés de dé pour pouvoir les comparer avec un if

    Ces 2 problèmes ont une solution commune

    0
    1. EdFull Messages postés 10 Statut Membre
       
      Bon ça fait déjà des heures que je cherche, que j'essaie des choses et je n'y arrive toujours pas...
      Je ne perd pas espoir bien sûr ! Mais pour le coup je me retrouve encore une fois bloqué.

      En effet, je n'arrive pas à placer les "return" correctement, du moins au bon endroit. Quand je pense avoir réussi les "print" n'ont plus aucuns effets et rien ne s'affiche dans la console.

      Même chose pour la comparaison et je pense que pour cette dernière il faut déjà que le début de mon programme soit correct, or ce n'est pas le cas, puisque je n'ai pas réussi à placer correctement les return.

      Je n'ai pas la solution à ces 2 problèmes. J'ai beau essayé plusieurs choses à chaque fois, ça ne fonctionne pas.

      Voici mon code actuel :

      from random import*

      class joueur():

      def __init__(self, NbreDeVie, NomDuPerso):
      self.vie=NbreDeVie
      self.nom=NomDuPerso

      def afficheEtat (self):
      print ("Il reste "+str(self.vie)+ " points de vie à " +self.nom)
      if self.vie == 0:
      print("Mario n'a plus de vie")

      def attaque (self):
      print(self.nom+ " attaque "+ "monstre")


      def SubitDegats (self):
      print(self.nom + " subit des dégats de la part de " + "monstre" + " !")
      self.vie=self.vie-1

      def LanceleDe (self):
      self.LanceleDe
      tirage = randint(1,6)
      print(tirage)



      class MonstreFacile():

      def __init__(self,NbredeVie,NomduPerso): # on définit la méthode qui va initialiser les attributs
      self.vie=NbredeVie
      self.nom=NomduPerso


      def afficheEtat(self): #voici la méthode qui affiche l'état du personnage
      print ('Il reste '+str(self.vie)+' points de vie')

      #OBJECTIF : Créer une méthode qui enlèvera un point de vie au personnage blesse, une méthode qui affichera le nombre de vies restantes

      def SubitDegats (self):#voici la méthode qui fait perdre 1 point de vie au personnage qui a subit une attaque
      print(self.nom + " subit des dégats de la part de " + "monstre" + " !")
      self.vie=self.vie-1


      def LanceleDe(self):
      self.LanceleDe
      tirage = randint(1,6)
      print(tirage)


      # on crée une instance de la classe personnage nommée Bowser (plus d'indentation, car la définition de la classe est terminée)


      def combat(joueur, MonstreFacile):
      tirage1 = joueur.LanceleDe
      Dejoueur = tirage1
      print("Le nombre tiré par notre joueur est")
      print(joueur.LanceleDe())
      tirage2 = MonstreFacile.LanceleDe
      DeMonstreFacile = tirage2
      print("Le nombre tiré par le monstre est")
      print(MonstreFacile.LanceleDe())
      return combat

      if "tirage1" >= "tirage2":
      Bowser.SubitDegats
      print("Le monstre a perdu le duel, il perd des points de vie !")
      else:
      "tirage1" < "tirage2"
      Mario.SubitDegats
      print("Le joueur a perdu le duel, il perd des points de vie !")


      Bowser=MonstreFacile(20,'Bowser')
      Mario= joueur(150, "Mario")
      combat(Mario, Bowser)


      La fonction combat n'est pas du tout bien organisé, ça se voit rien qu'en regardant et j'en ai conscience.
      Ce code ne marche pas pour une info, c'est juste pour te donner un aperçu de là ou je suis rendu.

      -> Il ne fera qu'afficher ce qu'on avait au départ...

      Le nombre tiré par notre joueur est
      5
      None
      Le nombre tiré par le monstre est
      5
      None
      0
  3. Utilisateur anonyme
     
    Tu vas réduire Combat à

    def combat(joueur, MonstreFacile):
        joueur.LanceleDe
    


    Tu lances et tu notes ce que ça fait.

    Ensuite
    def combat(joueur, MonstreFacile):
        tirage1 = joueur.LanceleDe
        print(tirage1)
    


    tu lances et tu compares le résultat avec le précédent
    0
    1. EdFull Messages postés 10 Statut Membre
       
      Ok donc j'ai fait ce que tu m'as demandé et j'ai observé que le premier essai n'affichait rien dans la console.

      Ensuite pour ce qui est du deuxième essai :
      def combat(joueur, MonstreFacile): #2e essai
          tirage1 = joueur.LanceleDe
          print(tirage1())


      Ce dernier affiche bien le chiffre puis "none"
      5
      None


      Était-ce la réponse attendue ?

      De mon côté, j'ai tenté d'aller plus loin et j'ai aboutit à ceci :
      def combat(joueur, MonstreFacile):
          tirage1 = joueur.LanceleDe
          print("Le nombre tiré par notre joueur est")
          return(tirage1())
      
      
          tirage2= MonstreFacile.LanceleDe
          print("Le nombre tiré par le monstre est")
          return(tirage2())

      Étant donné que les "none" apparaissaient toujours j'ai essayé de les faire disparaître avec des "return", problème dès que j'en mets pour le tirage numéro 1, plus rien ne s'affiche pour le tirage numéro 2...
      Comme-ci :
      Le nombre tiré par notre joueur est
      3

      Je ne vois donc pas comment afficher les résultats des 2 tirages.
      0
  4. dachiasse Messages postés 1932 Statut Membre 153
     
    Salut,

    "Pour en revenir au programme, il est vrai qu’il est judicieux de tout regrouper de la sorte merci pour votre conseil. En suite, j’ai moi aussi trouvé dérangeant ces « none » et je pense savoir pourquoi ces derniers apparaissent. En effet, c’est parce qu’il manque un « return » à ma fonction."

    Je pense que Whis connait la réponse. Mais, il te suffit de tester dans l'interpréteur python 3 :
    print(print(1))


    Je me trompe peut-être, mais, Whis t'aide à déboguer ton programme.

    Déjà, tu dois remarquer que les classes Joueur et Monstre se ressemblent énormément, à vrai dire, elles sont similaires. Pas d'intérêt de créer 2 classes similaires. Fais-en une seule et tu ajoutes un attribut qui va différencier le joueur du monstre. Je te laisse deviner le type de l'attribut.

    Dans une fonction, dès qu'un
    return
    est atteint, le reste qui suit de la fonction est ignoré. Donc, ton jeu c'est de comparer 2 tirages, et comment on compare en langage de programmation ?
    0
    1. EdFull Messages postés 10 Statut Membre
       
      Bonjour !

      Oui l’hérédité est une notion que je connais, mais que je ne maîtrise pas vraiment. On utilise cette notion lors de la création d’une classe, (il me semble)

      Ex :
      class joueur():

      […]


      class MonstreFacile(joueur) :

      […]

      Étant donné que je la maîtrise pas assez je vais attendre un peu avant de pouvoir l’utiliser. J’aimerai dans un premier temps résoudre mon problème de « return » et de « print » pour ensuite pouvoir me pencher sur comment comparer deux lancés.

      Mais merci de l’info et des explications sur les effets d’un return ! Pour répondre également à ta question « Donc, ton jeu c'est de comparer 2 tirages, et comment on compare en langage de programmation ? » oui, c’est exactement ça pour l’instant.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dachiasse Messages postés 1932 Statut Membre 153
     
    J'ai tenté de faire ton programme. J'ai réussi en POO et en... 24 lignes (hors sauts de lignes). J'ai simplifié, par exemple, la méthode
    afficheEtat()
    ne sert à rien, on peut obtenir le même résultat avec
    self.vie
    .
    0
    1. Utilisateur anonyme
       
      Bonjour Dachiasse.

      Que tu es réussi à le faire en 24 lignes n'aide pas EdFull.

      Pas plus que sous entendre qu'il devrait faire hériter ses 2 classes d'une seule et même classe, il n'en est pas encore là.


      Ce qui l'aiderait c'est de trouver comment lui faire comprendre où est l'erreur de son code.
      0
  7. Utilisateur anonyme
     
    DeFull, j'ai fait une erreur, je voulais que tu testes
    def combat(joueur, MonstreFacile):
        joueur.LanceleDe()


    et
    def combat(joueur, MonstreFacile):
        tirage1 = joueur.LanceleDe()
        print(tirage1)


    J'avais oublié les parenthèses.

    Ensuite, je ne veux pas que de ton coté tu fasses 50 autres tests, je veux que tu réfléchisses au effets d'un return (détaillés plus haut) et à la différence de résultats des ces 2 "combat".

    Et tu ne reviens parler que de ça, que tu aies trouvé ou pas.

    0
    1. EdFull Messages postés 10 Statut Membre
       
      Pas de soucis, ça arrive à tout le monde de faire des erreurs.

      Pour ce qui est des test,

      Essai n°1 → La console affiche seulement le chiffre, et ceci, car on fait directement appel à la fonction ( je ne suis pas sûr).

      Ensuite pour l’essai n°2 → La console affiche le chiffre et « 
      none
       ».


      Pour ce qui est des effets d’un « return » il retourne ce que lui envoie la fonction et comme l’a dit dachiasse on sort de la fonction lorsque l’on rencontre un « return », ainsi le reste du code, suivant ce dernier n’est pas exécuté.

      Ainsi, pour différencier un « print » d’un « return », je dirai que :

      Print = affiche le résultat à l’écran.

      Return = renvoie une valeur.

      → Il serait donc plus judicieux d’utiliser un return puisqu’un « print », (si j’ai bien compris) ne fait QUE afficher le résultat ?
      0
      1. Utilisateur anonyme > EdFull Messages postés 10 Statut Membre
         
        Oui il serait plus judicieux d’utiliser des returns à condition qu’il soient bien placés.
        Où doivent être placés ces return pour te permettre par la suite de comparer les tirages de dé
        0
      2. EdFull Messages postés 10 Statut Membre > Utilisateur anonyme
         
        Bon du coup, j'ai pas réussi à trouver ou est-ce qu'il fallait mettre ces "return"...
        Mon code ressemble à ça :
        (Malheureusement ça ne marche pas correctement puisque la console affiche tout le temps que c'est le monstre qui gagne)
        from random import*
        
        class joueur():
        
            def __init__(self, NbreDeVie, NomDuPerso):
                self.vie=NbreDeVie
                self.nom=NomDuPerso
        
            def afficheEtat (self):
                print ("Il reste "+str(self.vie)+ " points de vie à " +self.nom)
                if self.vie == 0:
                    print("Mario n'a plus de vie")
        
            def attaque (self):
                print(self.nom+ " attaque "+ "monstre")
        
        
            def SubitDegats (self):
                print(self.nom + " subit des dégats de la part de " + "monstre" + " !")
                self.vie=self.vie-1
        
            def LanceleDe (self):
                self.LanceleDe
                tirage = randint(1,6)
                print(tirage)
        
        
        
        class MonstreFacile():
        
            def __init__(self,NbredeVie,NomduPerso): # on définit la méthode qui va initialiser les attributs
                self.vie=NbredeVie
                self.nom=NomduPerso
        
        
            def afficheEtat(self): #voici la méthode qui affiche l'état du personnage
                print ('Il reste '+str(self.vie)+' points de vie')
        
        #OBJECTIF : Créer une méthode qui enlèvera un point de vie au personnage blesse, une méthode qui affichera le nombre de vies restantes
        
            def SubitDegats (self):#voici la méthode qui fait perdre 1 point de vie au personnage qui a subit une attaque
                print(self.nom + " subit des dégats de la part de " + "monstre" + " !")
                self.vie=self.vie-1
        
        
            def LanceleDe(self):
                self.LanceleDe
                tirage = randint(1,6)
                print(tirage)
        
        
        # on crée une instance de la classe personnage nommée Bowser (plus d'indentation, car la définition de la classe est terminée)
        
        def combat(joueur, MonstreFacile):
        
            print("Le lancé du joueur est")
            tirage1 = joueur.LanceleDe()
            print("Le lancé du monstre est")
            tirage2 = MonstreFacile.LanceleDe()
        
            if "tirage1" >= "tirage2":
                print("Le lancé du joueur est supérieur à celui du monstre")
                MonstreFacile.SubitDegats
        
            else:
                "tirage1" < "tirage2"
                print("Le lancé du monstre est supérieur à celui du joueur")
                Mario.SubitDegats
            return (tirage1,tirage2)
        
        
        Bowser=MonstreFacile(20,'Bowser')
        Mario= joueur(150, "Mario")
        combat(Mario, Bowser)

        Pourrais-tu me donner quelques pistes ? Je ne veux pas la réponse immédiatement, mais quelques petites aides s'il vous plait.
        0
  8. Utilisateur anonyme
     
    En fait je te fait tourner autour de la solution depuis 3 jours.....

    Reprenons ce bout de code
    def combat(joueur, MonstreFacile):
        tirage1 = joueur.LanceleDe()
        print(tirage1)


    Tu as constaté que ça affiche none.
    Plusieurs fois, je t'ai poussé à te demandé pourquoi none.

    Puisque tu ne trouves pas tout seul, je finis par être obligé de te dire, parce qu'il n'y a rien dans tirage1. None ça veut dire rien
    print(rien)
    ça affiche none

    Maintenant, où faut il un return pour qu'il y ait quelque chose dans tirage1 ?
    Et c'est pas la peine d'aller plus loin, tant que ce point ne sera pas résolu
    0
    1. EdFull Messages postés 10 Statut Membre
       
      Ok, merci maintenant cette histoire de "none" c'est plus clair ;)

      Par contre, pour ce qui est de placer les return...

      J'ai effectué ceci :
      def combat(joueur, MonstreFacile):
          print("Le lancé du joueur est")
          tirage1 = joueur.LanceleDe()
          print("Le lancé du monstre est")
          tirage2 = MonstreFacile.LanceleDe()
          return (tirage1,tirage2)


      Cependant, je ne suis pas sûr que cela soit bon. Je ne vois pas ou les placer autre part que à la fin puisque si je les place en plein la milieu la suite de mon code serait ignoré.
      Y a t'il un moyen de vérifier si il y a quelque chose dans le tirage1, avec une commande ou autre ?
      0
      1. Utilisateur anonyme > EdFull Messages postés 10 Statut Membre
         
        Tu m'agaces à faire le contraire de ce que je te demande.
        J'essaye te pointer là où ça coinces et systématiquement tu vas voir ailleurs.

        Je t'ai demandé de ne pas aller plus loin tant que tirage vaut none

        Pour en faire quelque chose, il FAUT faire en sorte qu'il y ait une valeur dedans

        Actuellement cette ligne
        tirage1 = joueur.LanceleDe()
        revient à mettre rien dans tirage1, or ce serait bien que la valeur du dé soit dans tirage.

        Tu voies, c'est ce que voulait dire yg_be, tu as visé beaucoup trop haut pour ce devoirs
        Tu n'as toujours pas compris à quoi sert un return donc tu t'obstines à en mettre dans combat alors que ça ne sert à rien dans combat.
        Hier à 9h24, je t'ai dit

        Le mot clé return a 2 effets:
        • il stoppe l'exécution du bloc de code dans lequel il se trouve (une fonction en général)
        • il transmet un résultat à la ligne de code ayant appelé sa fonction


      2. Tu t'es inspiré d'un exemple dans autre langage qui utilise des classe alors que manifestement tu n'as pas compris à quoi ça sert.

        Ce code, sans en changer un caractère est correct.
        Le problème vient d'ailleurs
        def combat(joueur, MonstreFacile):
            tirage1 = joueur.LanceleDe()
            print(tirage1)


        Il faut que cette ligne, sans y toucher
            tirage1 = joueur.LanceleDe()
        mette la valeur du dé dans tirage1

        Si tu me montres quoique ce soit d'autre, que des tentatives de résoudre ce point spécifique, qui est ton seul problème depuis le début, je laisse tomber
0
  • yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Utilisateur anonyme
     
    "Visé trop haut"? Peut-être plutôt négligé de travailler pour acquérir d'abord les compétences de bases.
    0
  • Utilisateur anonyme > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
     
    Oui peut-être
    0
  • dachiasse Messages postés 1932 Statut Membre 153
     
    Salut,

    Je ne comprends pas ce que tu veux faire avec :
    def LanceleDe(self):
            self.LanceleDe # pourquoi ??!
            tirage = randint(1,6)
            print(tirage)


    Whis a rectifié car je ne comprenais pas pourquoi dans son message 10, il n'avait pas mis les parenthèses qui permettent d'appeler une fonction :
    def combat(joueur, MonstreFacile):
        joueur.LanceleDe # il a rectifié : joueur.LanceleDe()


    Quand tu as sous-entendu que je lui suggérais l'héritage, j'avais omis le niveau des monstres, et je n'ai fait qu'une seule classe, j'y ai défini une méthode attaquer qui prend
    self
    et
    other
    en paramètres.

    Après, on peut faire dérouler le jeu comme on le souhaite, j'ai créé une boucle tant que... je te laisse deviner la condition. Une fois la boucle finie, j'affiche le nom du vainqueur et le score.

    Je pense que Edfull s'éparpille et qu'il devrait reprendre les objectifs de son jeu qui sont :
    - 2 joueurs s'affrontent
    - chacun tire un nombre au hasard
    - le vainqueur de la bataille fait perdre des points au vaincu
    - répéter les 2 lignes ci-dessus tant que... Je te laisse deviner la condition
    - annoncer le vainqueur et le résultat

    Dans cette optique, on doit créer une classe joueur, une méthode pour tirer un nombre au hasard, une méthode de perte de points, une boucle
    while
    , un
    print()
    . Dans ce cas, la méthode tirer précède la méthode perdre_points, il faudra un
    return
    à utiliser. À toi de savoir où et que faire de la valeur retournée.
    0
    1. Utilisateur anonyme
       
      C'est déjà assez compliqué comme ça pour qu'il cherche du bon coté.
      Alors merci de ne l'embrouiller plus qu'il ne l'est déjà.
      0
      1. dachiasse Messages postés 1932 Statut Membre 153 > Utilisateur anonyme
         
        en fait, j'essaye de lui faire comprendre qu'il se complique la vie. Il ne sait déjà pas bien coder son jeu que j'y vois une gestion de niveau. Gestion purement inutile avec la méthode
        random.randint(a,b)
        puisque les probabilités sont équivalentes.

        Je suis d'accord sur le fait de corriger cette erreur sémantique avec
        None
        0
  • Utilisateur anonyme
     
    Plus de 24H de silence, soit t'es toujours bloqué là, soit on t'a donné la solution ailleurs.

    A supposé que tu sois toujours bloqué, on va essayer une autre approche.

    Poste une ligne de code qui stocke la valeur du cosinus de 2 radian dans la variable toto

    0