from random import *
nbEssais = 7
listeMots = []
letter = ""
mot = ""
nb = 0
tab=[
"""
+-------+
|
|
|
|
|
==============
""",
"""
+-------+
| |
| O
|
|
|
==============
"""
,
"""
+-------+
| |
| O
| |
|
|
==============
""",
"""
+-------+
| |
| O
| -|
|
|
==============
""",
"""
+-------+
| |
| O
| -|-
|
|
==============
""",
"""
+-------+
| |
| O
| -|-
| |
|
==============
""",
"""
+-------+
| |
| O
| -|-
| | |
|
==============
"""
]
def lectureFichier():
fichier = open("dico.txt", "r", encoding="utf-8")
for i in range(1,800):
contenu = fichier.readline()
listeMots.append(contenu.rstrip())
return listeMots
def motTirage(listeMots):
tirage = randint(1,len(listeMots))
mot = listeMots[tirage]
print(mot)
def saisie():
letter = input()
return letter
def dessinPendu(nb):
return tab[nb]
def verifLetter(nb,letter,mot):
if letter in mot:
print(tab[nb])
print("La lettre est correct.")
else:
nb += 1
print(tab[nb])
print("La lettre est incorrect.")
def main():
lectureFichier()
motTirage(listeMots)
for i in range(0,nbEssais):
saisie()
verifLetter(nb,letter,mot)
dessinPendu(nb)
main()Oui je me suis rendu compte que j'avais fais de la merde alors j'ai réécris le code.
Mais nouveau problème: même si je tape une lettre qui n’est pas dans le mot le programme réagit comme si elle était bonne. ![]()
Aah c'est parce que que dans la fonction motTirage j'ai mis print au lieu de return
Le 31 mai 2020 à 15:47:13 MouiG a écrit :
Aah c'est parce que que dans la fonction motTirage j'ai mis print au lieu de return
J'ai modifié mais ca ne marche toujours pas ![]()
from random import *
nbEssais = 7
listeMots = []
tab=[
"""
+-------+
|
|
|
|
|
==============
""",
"""
+-------+
| |
| O
|
|
|
==============
"""
,
"""
+-------+
| |
| O
| |
|
|
==============
""",
"""
+-------+
| |
| O
| -|
|
|
==============
""",
"""
+-------+
| |
| O
| -|-
|
|
==============
""",
"""
+-------+
| |
| O
| -|-
| |
|
==============
""",
"""
+-------+
| |
| O
| -|-
| | |
|
==============
"""
]
def lectureFichier():
fichier = open("dico.txt", "r", encoding="utf-8")
for i in range(1,800):
contenu = fichier.readline()
listeMots.append(contenu.rstrip())
def motTirage(listeMots):
tirage = randint(0,len(listeMots))
return listeMots[tirage]
def saisie():
letter = input()
return letter
def dessinPendu(nb):
return tab[nb]
def verifLetter(nb,letter,mot):
if letter in mot:
print(tab[nb])
print("La lettre est correct.")
else:
nb+=1
print(tab[nb])
print("La lettre est incorrect.")
def main():
lectureFichier()
mot = motTirage(listeMots)
nb = 0
for i in range(0,nbEssais):
l = saisie()
verifLetter(nb,l,mot)
dessinPendu(nb)
main()Essaie ça, sans certitudes parce que j'ai pas moyen de tester ![]()
Ca marche ![]()
Mais nb oscille entre 0 et 1 ducoup le dessins du pendu oscille lui aussi entre les deux premières position en fonction de si on tape une lettre correct ou non.
J'ai cherché mais je ne vois pas du tout d'où peu venir le problème. ![]()
Il te faudra un moyen d'arrêter en cas de victoire aussi, ça peut être un compteur de lettres "correctes" et vérifier que ce compteur est = à la longueur du mot à trouver
Mais faut faire gaffe si ton mot a plusieurs lettres en double, genre ETIRER par ex. Suffit de trouver 4 lettres pour gagner : E,T,I,R alors que le mot fait 6 lettres. Donc qd le joueur trouve la lettre 'E' ou 'R', faut incrémenter ce compteur de 2. C'est une idée comme une autre, probablement pas la meilleure ![]()
Ou alors au lieu de vérifier que le compteur est = à la longueur du mot à trouver, tu vérifies qu'il est = au nombre de lettres différentes dans le mot
len(set("ETIRER") donne 4 normalement
Le 31 mai 2020 à 16:08:49 MouiG a écrit :
Ca marche
Mais nb oscille entre 0 et 1 ducoup le dessins du pendu oscille lui aussi entre les deux premières position en fonction de si on tape une lettre correct ou non.
J'ai cherché mais je ne vois pas du tout d'où peu venir le problème.
J'avoue j'ai pas trop compris ce que t'essaies de faire avec le dessin du pendu, ta fonction dessinPendu est pas utile si tu fais déjà l'affichage dans verifLetter nan ?
Le 31 mai 2020 à 14:34:17 Polachek a écrit :
J'espère que tu comptes pas faire de l'info si tu galères à faire un bête jeu du pendu
La plupart des gens qui arrive en DUT info par exemple en seraient incapables. En première il y a rien d'anormal.
Le 31 mai 2020 à 16:15:07 souil51 a écrit :
Le 31 mai 2020 à 14:34:17 Polachek a écrit :
J'espère que tu comptes pas faire de l'info si tu galères à faire un bête jeu du penduLa plupart des gens qui arrive en DUT info par exemple en seraient incapables. En première il y a rien d'anormal.
Je le taquine, moi-même j'fais des erreurs en l'aidant
j'suis pas doué pour débugger le code des autres
Puis là en vrai il est pas loin d'avoir fini
from random import *
nbEssais = 7
listeMots = []
tab=[
"""
+-------+
|
|
|
|
|
==============
""",
"""
+-------+
| |
| O
|
|
|
==============
"""
,
"""
+-------+
| |
| O
| |
|
|
==============
""",
"""
+-------+
| |
| O
| -|
|
|
==============
""",
"""
+-------+
| |
| O
| -|-
|
|
==============
""",
"""
+-------+
| |
| O
| -|-
| |
|
==============
""",
"""
+-------+
| |
| O
| -|-
| | |
|
==============
"""
]
def lectureFichier():
fichier = open("dico.txt", "r", encoding="utf-8")
for i in range(1,800):
contenu = fichier.readline()
listeMots.append(contenu.rstrip())
return listeMots
def motTirage(listeMots):
tirage = randint(1,len(listeMots))
mot = listeMots[tirage]
print(mot)
return mot
def saisie():
letter = input()
return letter
def verifLetter(nb,letter,mot):
if letter in mot:
print(tab[nb])
print("La lettre est correct.")
return tab[nb]
correctLetter += 1
else:
nb += 1
print(tab[nb])
print("La lettre est incorrect.")
return tab[nb]
def main():
lectureFichier()
mot = motTirage(listeMots)
nb = 0
correctLetter = 0
for i in range(0,nbEssais+1):
if correctLetter != len(set(mot)):
if i < nbEssais:
l = saisie()
verifLetter(nb,l,mot)
else:
print('Vous avez perdu')
else:
print('Vous avez gagné')
main()Bon effectivement la fonction dessinpendu servait à rien ducoup je l'ai supprimer et l'affichage est gérer par la fonction verifLetter mais ca n'a pas réglé le problème. ![]()
J'ai aussi essayé de faire en sorte que le jeu s'arrête lorsque le joueur gagne mais ca ne marche pas (aucune erreur mais le jeu ne s'arrête pas) ![]()
y'a pas de condition pour que le jeu s'arrête lorsqu'on a gagné sur le dernier code ![]()
[14:34:17] <Polachek>
J'espère que tu comptes pas faire de l'info si tu galères à faire un bête jeu du pendu
from random import *
nbEssais = 7
listeMots = []
nb = 0
correctLetter = 0
tab=[
"""
+-------+
|
|
|
|
|
==============
""",
"""
+-------+
| |
| O
|
|
|
==============
"""
,
"""
+-------+
| |
| O
| |
|
|
==============
""",
"""
+-------+
| |
| O
| -|
|
|
==============
""",
"""
+-------+
| |
| O
| -|-
|
|
==============
""",
"""
+-------+
| |
| O
| -|-
| |
|
==============
""",
"""
+-------+
| |
| O
| -|-
| | |
|
==============
"""
]
def lectureFichier():
fichier = open("dico.txt", "r", encoding="utf-8")
for i in range(1,800):
contenu = fichier.readline()
listeMots.append(contenu.rstrip())
return listeMots
def motTirage(listeMots):
tirage = randint(1,len(listeMots))
mot = listeMots[tirage]
print(mot)
return mot
def saisie():
letter = input()
return letter
def verifLetter(letter,mot):
global nb
global correctLetter
if letter in mot:
print(tab[nb])
print("La lettre est correct.")
correctLetter += 1
return tab[nb]
else:
nb = nb + 1
print(tab[nb])
print("La lettre est incorrect.")
return tab[nb]
def main():
global nb
global correctLetter
lectureFichier()
mot = motTirage(listeMots)
for i in range(0,nbEssais+1):
print(correctLetter)
if correctLetter != len(set(mot)):
if i < nbEssais:
l = saisie()
verifLetter(l,mot)
else:
print('Vous avez perdu')
else:
print('Vous avez gagne')
main()Bon c'est très très moche, j'espère qu'aucun Jean-info ne verra la merde que j'ai pondu 
Plus jamais je fais le malin ![]()
Bon sans tester j'imagine que le problème que tu vas avoir c'est qu'en l'état, rien n'empêche le joueur de joueur plusieurs fois de suite une lettre correcte ... jusqu'à gagner ![]()
Faut que t'empêches le joueur de re-jouer une lettre déjà jouée, en gros tu fais une fonction qui vérifie la saisie, t'en profites pour vérifier qu'il saisit bien une seule lettre de A à Z (minuscule ou majuscule), parce que là le joueur peut rentrer ce qu'il veut
Je sais pas si c'est moche mais en tout cas ca marche ![]()
C'est presque fini il reste plus que quelques truc à faire:
Le 31 mai 2020 à 16:58:40 Polachek a écrit :
Bon sans tester j'imagine que le problème que tu vas avoir c'est qu'en l'état, rien n'empêche le joueur de joueur plusieurs fois de suite une lettre correcte ... jusqu'à gagnerFaut que t'empêches le joueur de re-jouer une lettre déjà jouée, en gros tu fais une fonction qui vérifie la saisie, t'en profites pour vérifier qu'il saisit bien une seule lettre de A à Z (minuscule ou majuscule), parce que là le joueur peut rentrer ce qu'il veut
Je sens que je vais galérer a faire ca
Le 31 mai 2020 à 14:41:04 MouiG a écrit :
Le 31 mai 2020 à 14:38:36 Polachek a écrit :
Montre-nous où t'en es au moins, c'est sur quelle fonctionnalité que tu galères ?Je galère à récuperer les mots du fichier dico.txt sans qu'il y ait '/n' au début de chaque mots.
Bah retire le /n
Le 31 mai 2020 à 17:01:17 Yebz a écrit :
Le 31 mai 2020 à 14:41:04 MouiG a écrit :
Le 31 mai 2020 à 14:38:36 Polachek a écrit :
Montre-nous où t'en es au moins, c'est sur quelle fonctionnalité que tu galères ?Je galère à récuperer les mots du fichier dico.txt sans qu'il y ait '/n' au début de chaque mots.
Bah retire le /n
Merci khey j'y avais pas pensé ![]()
Pour vérifier que le joueur re-joue pas une lettre, tu peux faire une liste "Historique" dans lequel t'ajoutes la lettre jouée à chaque tour et tu vérifies que "lettre not in Historique"
Pour vérifier que la saisie est bien un caractère entre A et Z (minuscule ou majuscule) tu peux appeler la méthode isalpha() sur un String, pour vérifier que c'est un seul caractère qui est entré tu vérifies avec len() (genre len(saisie) == 1)
Du coup if(saisie.isalpha() and len(saisie)==1) devrait faire le taff
from random import *
nbEssais = 7
listeMots = []
nb = 0
correctLetter = 0
historique =[]
tab=[
"""
+-------+
|
|
|
|
|
==============
""",
"""
+-------+
| |
| O
|
|
|
==============
"""
,
"""
+-------+
| |
| O
| |
|
|
==============
""",
"""
+-------+
| |
| O
| -|
|
|
==============
""",
"""
+-------+
| |
| O
| -|-
|
|
==============
""",
"""
+-------+
| |
| O
| -|-
| |
|
==============
""",
"""
+-------+
| |
| O
| -|-
| | |
|
==============
"""
]
def lectureFichier():
fichier = open("dico.txt", "r", encoding="utf-8")
for i in range(1,800):
contenu = fichier.readline()
listeMots.append(contenu.rstrip())
return listeMots
def motTirage(listeMots):
tirage = randint(1,len(listeMots))
mot = listeMots[tirage]
print(mot)
return mot
def saisie():
letter = input()
historique.append(letter)
return letter
def verifLetter(letter,mot):
global nb
global correctLetter
if letter in mot:
print(tab[nb])
print("La lettre est correct.")
correctLetter += 1
return tab[nb]
else:
nb = nb + 1
print(tab[nb])
print("La lettre est incorrect.")
return tab[nb]
def main():
global nb
global correctLetter
lectureFichier()
mot = motTirage(listeMots)
for i in range(0,nbEssais+1):
print(correctLetter)
if correctLetter != len(set(mot)):
if i < nbEssais:
l = saisie()
if(l.isalpha() and len(l)==1 and l not in historique):
verifLetter(l,mot)
else:
print('Vous avez perdu')
return
else:
print('Vous avez gagne')
return
main()J'ai fais ca mais les dessins n'apparaisse plus dans la console ![]()
Il y a juste le compteur de lettres correctes.