Comparer les résultats de 2 dés
Fermé
EdFull
Messages postés
8
Date d'inscription
jeudi 29 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020
-
29 oct. 2020 à 17:28
Utilisateur anonyme - 2 nov. 2020 à 00:08
Utilisateur anonyme - 2 nov. 2020 à 00:08
A voir également:
- Comparer les résultats de 2 dés
- Word numéro de page 1/2 - Guide
- 2 ecran pc - Guide
- Resultats foot - Télécharger - Vie quotidienne
- 3 bip long 2 bip court hp - Forum BIOS
- Xsarius pure 2 mode d'emploi - Forum TV & Vidéo
9 réponses
Utilisateur anonyme
29 oct. 2020 à 19:51
29 oct. 2020 à 19:51
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
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
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
C'est mieux rangé, et on a toujours un affichage du même type
A ton avis d'où viennent les "none"?
Dans la fonction Combat, comment pourras tu comparer les lancés de dé?
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é?
Utilisateur anonyme
Modifié le 30 oct. 2020 à 09:25
Modifié le 30 oct. 2020 à 09:25
En effet, il te manque des return quelque part.
Mais pas dans la fonction Combat.
Le mot clé return a 2 effets:
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
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
EdFull
Messages postés
8
Date d'inscription
jeudi 29 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020
30 oct. 2020 à 22:34
30 oct. 2020 à 22:34
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 :
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...
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
Utilisateur anonyme
30 oct. 2020 à 23:57
30 oct. 2020 à 23:57
Tu vas réduire Combat à
Tu lances et tu notes ce que ça fait.
Ensuite
tu lances et tu compares le résultat avec le précédent
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
EdFull
Messages postés
8
Date d'inscription
jeudi 29 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020
31 oct. 2020 à 02:06
31 oct. 2020 à 02:06
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 :
Ce dernier affiche bien le chiffre puis "none"
Était-ce la réponse attendue ?
De mon côté, j'ai tenté d'aller plus loin et j'ai aboutit à ceci :
É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 :
Je ne vois donc pas comment afficher les résultats des 2 tirages.
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.
dachiasse
Messages postés
1709
Date d'inscription
samedi 12 septembre 2020
Statut
Membre
Dernière intervention
13 mai 2021
149
31 oct. 2020 à 05:10
31 oct. 2020 à 05:10
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 :
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
"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
returnest 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 ?
EdFull
Messages postés
8
Date d'inscription
jeudi 29 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020
31 oct. 2020 à 12:05
31 oct. 2020 à 12:05
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 :
[…]
[…]
É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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dachiasse
Messages postés
1709
Date d'inscription
samedi 12 septembre 2020
Statut
Membre
Dernière intervention
13 mai 2021
149
31 oct. 2020 à 06:13
31 oct. 2020 à 06:13
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.
Utilisateur anonyme
Modifié le 31 oct. 2020 à 09:16
Modifié le 31 oct. 2020 à 09:16
DeFull, j'ai fait une erreur, je voulais que tu testes
et
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.
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.
EdFull
Messages postés
8
Date d'inscription
jeudi 29 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020
31 oct. 2020 à 12:04
31 oct. 2020 à 12:04
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 «
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 ?
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 ?
Utilisateur anonyme
>
EdFull
Messages postés
8
Date d'inscription
jeudi 29 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020
31 oct. 2020 à 12:22
31 oct. 2020 à 12:22
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é
Où doivent être placés ces return pour te permettre par la suite de comparer les tirages de dé
EdFull
Messages postés
8
Date d'inscription
jeudi 29 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020
>
Utilisateur anonyme
Modifié le 31 oct. 2020 à 14:42
Modifié le 31 oct. 2020 à 14:42
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)
Pourrais-tu me donner quelques pistes ? Je ne veux pas la réponse immédiatement, mais quelques petites aides s'il vous plait.
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.
Utilisateur anonyme
31 oct. 2020 à 16:34
31 oct. 2020 à 16:34
En fait je te fait tourner autour de la solution depuis 3 jours.....
Reprenons ce bout de code
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
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
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
EdFull
Messages postés
8
Date d'inscription
jeudi 29 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020
31 oct. 2020 à 17:15
31 oct. 2020 à 17:15
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 :
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 ?
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 ?
Utilisateur anonyme
>
EdFull
Messages postés
8
Date d'inscription
jeudi 29 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020
Modifié le 31 oct. 2020 à 18:23
Modifié le 31 oct. 2020 à 18:23
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
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
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
Il faut que cette ligne, sans y toucher
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
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
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
yg_be
Messages postés
23409
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
>
Utilisateur anonyme
31 oct. 2020 à 19:06
31 oct. 2020 à 19:06
"Visé trop haut"? Peut-être plutôt négligé de travailler pour acquérir d'abord les compétences de bases.
Utilisateur anonyme
>
yg_be
Messages postés
23409
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
31 oct. 2020 à 20:54
31 oct. 2020 à 20:54
Oui peut-être
dachiasse
Messages postés
1709
Date d'inscription
samedi 12 septembre 2020
Statut
Membre
Dernière intervention
13 mai 2021
149
31 oct. 2020 à 19:22
31 oct. 2020 à 19:22
Salut,
Je ne comprends pas ce que tu veux faire avec :
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 :
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
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
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
selfet
otheren 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.
dachiasse
Messages postés
1709
Date d'inscription
samedi 12 septembre 2020
Statut
Membre
Dernière intervention
13 mai 2021
149
>
Utilisateur anonyme
31 oct. 2020 à 21:21
31 oct. 2020 à 21:21
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
Je suis d'accord sur le fait de corriger cette erreur sémantique avec
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
Utilisateur anonyme
2 nov. 2020 à 00:08
2 nov. 2020 à 00:08
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
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
30 oct. 2020 à 03:01
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 :
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 !