CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Des Jean codeurs pour m'aider ?

Mouig
Mouig
Niveau 6
31 mai 2020 à 15:41:41
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. :(

Mouig
Mouig
Niveau 6
31 mai 2020 à 15:47:13

Aah c'est parce que que dans la fonction motTirage j'ai mis print au lieu de return

Mouig
Mouig
Niveau 6
31 mai 2020 à 15:47:44

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 :(

Polachek
Polachek
Niveau 10
31 mai 2020 à 15:57:21
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 :hap:

Message édité le 31 mai 2020 à 15:59:56 par Polachek
Mouig
Mouig
Niveau 6
31 mai 2020 à 16:08:49

Ca marche :oui:
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. :(

Polachek
Polachek
Niveau 10
31 mai 2020 à 16:10:05

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 :hap:

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

Message édité le 31 mai 2020 à 16:13:12 par Polachek
Polachek
Polachek
Niveau 10
31 mai 2020 à 16:14:22

Le 31 mai 2020 à 16:08:49 MouiG a écrit :
Ca marche :oui:
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 ?

souil51
souil51
Niveau 55
31 mai 2020 à 16:15:07

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.

Polachek
Polachek
Niveau 10
31 mai 2020 à 16:18:22

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 pendu :(

La 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 :rire: j'suis pas doué pour débugger le code des autres

Puis là en vrai il est pas loin d'avoir fini

Mouig
Mouig
Niveau 6
31 mai 2020 à 16:26:36
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) :(

Jean-rigoladev3
Jean-rigoladev3
Niveau 8
31 mai 2020 à 16:40:10

y'a pas de condition pour que le jeu s'arrête lorsqu'on a gagné sur le dernier code :(

JERKINGOFF
JERKINGOFF
Niveau 6
31 mai 2020 à 16:46:10

[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 :(

Polachek
Polachek
Niveau 10
31 mai 2020 à 16:46:51
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 https://image.noelshack.com/fichiers/2018/13/6/1522514698-risitassueurz.png

Plus jamais je fais le malin :rire:

Message édité le 31 mai 2020 à 16:47:09 par Polachek
Polachek
Polachek
Niveau 10
31 mai 2020 à 16:58:40

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 :hap:

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

Message édité le 31 mai 2020 à 16:59:19 par Polachek
Mouig
Mouig
Niveau 6
31 mai 2020 à 16:59:21

Je sais pas si c'est moche mais en tout cas ca marche :)
C'est presque fini il reste plus que quelques truc à faire:

  • j'ai oublié que le jeu devait s'arrêter non pas lorsque le nombre d'essais est atteint mais lorsque le dessin du pendu est fini
  • les mots sont noté en majuscule dans le fichier, il faut que le joueur puisse taper les lettres en minuscule
  • il faut que le programme détecte lorsque l'on tape deux fois la même lettre ou que le joueur tape un caractère qui n'est pas une lettre et qu'il passe pas à l'étape suivante du dessin (mais c'est pas une priorité la prof est chiante à croire que le joueur sera forcement un attardé)
Mouig
Mouig
Niveau 6
31 mai 2020 à 17:00:06

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'à gagner :hap:

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 sens que je vais galérer a faire ca

Yebz
Yebz
Niveau 24
31 mai 2020 à 17:01:17

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. https://image.noelshack.com/fichiers/2017/03/1484762204-10.jpg

Bah retire le /n

Mouig
Mouig
Niveau 6
31 mai 2020 à 17:02:21

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. https://image.noelshack.com/fichiers/2017/03/1484762204-10.jpg

Bah retire le /n

Merci khey j'y avais pas pensé :rire:

Polachek
Polachek
Niveau 10
31 mai 2020 à 17:02:27

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

Message édité le 31 mai 2020 à 17:03:42 par Polachek
Mouig
Mouig
Niveau 6
31 mai 2020 à 17:09:56
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.

Sous forums
  • Religion
La vidéo du moment