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

[Help] Jeu du pendu en python

Mouig
Mouig
Niveau 6
02 juin 2020 à 14:13:51
from random import *

listeMots = []
nb = 0
correctLetter = 0
nbFautes = 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()
    letter.upper()
    historique.append(letter)
    return letter

def verifLetter(letter,mot):
    global nb
    global correctLetter
    if letter in mot:
        print(tab[nb])
        print("La lettre est correcte.")
        correctLetter += 1
        return tab[nb]
    else:
        nb = nb + 1
        print(tab[nb])
        print("La lettre est incorrecte.")
        return tab[nb]

def main():
    global nb
    global correctLetter
    lectureFichier()
    mot = motTirage(listeMots)
    while nbFautes < 7:
        print(correctLetter)
        if correctLetter != len(set(mot)):       
            l = saisie()
            #if(l.isalpha() and len(l)==1 and l not in historique):
            verifLetter(l,mot)
        else:
            print('Vous avez gagne')
            return
    print("Vous avez perdu")
    return

main()

Avant hier j'ai commencé un jeu du pendu en python (voir ce topic):
https://www.jeuxvideo.com/forums/42-51-63277227-1-0-1-0-des-jean-codeurs-pour-m-aider.htm

Alors voila, il me reste quelques truc a faire et j'en suis incapable:

  • il faut ajouter une fonction pour l'avancement de la découverte du mot par le joueur (ex: si le mot est "pomme" et que je joueur trouve la lettre "o" il faut print: _ o _ _ _ )
  • dans le fichier répertoriant tout les mots que le programme peut selectionner les lettres sont toutes en majuscules, il faut que le programme considère les minuscule tapées par le joueur comme des majuscules (j'ai fait un essais dans la fonction saisie() mais ça ne marche pas)
  • il faut que lorsque le joueur tape un caractère spéciaux ou plusieurs lettres d'un coup cela ne lui retire pas un essais (j'ai fais une tentative dans la fonction main() mais ça ne marche pas non plus)

Voila si vous pensez pouvoir m'aider sur un des point je dis pas non https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

snakamoto
snakamoto
Niveau 10
02 juin 2020 à 14:52:01

le truc le plus important qu'il faut comprendre dans ton code déjà, c'est que les fonctions qui retournent une variable ne créent ou ne mettent pas la variable à jour toutes seules, c'est normal que ça marche pas.
par ex faut faire
liste=lectureFichier()
et pas juste lectureFichier()

si tu fais
letter = input()
letter.upper()

letter ne va pas changer

faut faire
letter=input()
letter=letter.upper()

ou si tu veux avoir plus de swag :
letter=input().upper()

ensuite tu nommes mal tes fonctions, c'est pas des classes igo, il faut les nommer en minuscule avec des '_' si besoin, genre lecture_fichier() au lieu de lectureFichier, tu t'es cru en Java ? https://openclassrooms.com/fr/courses/4425111-perfectionnez-vous-en-python/4464230-assimilez-les-bonnes-pratiques-de-la-pep-8#/id/r-4464734

Message édité le 02 juin 2020 à 14:55:25 par snakamoto
Mouig
Mouig
Niveau 6
02 juin 2020 à 15:43:47

Ok merci j'ai modifié et ça marche maintenant :ok:
Reste plus que le reste :-(

snakamoto
snakamoto
Niveau 10
02 juin 2020 à 15:56:02

je t'ai fait le reste en corrigeant d'autres erreur
randint faut qu'il aille de 0 à n-1, les listes sont indexées à partir de 0
pareil nbfautes c'est jusqu'à 6 pour la meme raison

from random import *

tab = [
    """
   +-------+
       |
       |
       |
       |
       |
    ==============
    """,
    """
       +-------+
       |       |
       |       O
       |
       |
       |
    ==============
    """
    ,
    """
       +-------+
       |       |
       |       O
       |       |
       |
       |
    ==============
    """,
    """
       +-------+
       |       |
       |       O
       |      -|
       |
       |
    ==============
    """,
    """
       +-------+
       |       |
       |       O
       |      -|-
       |
       |
    ==============
    """,
    """
       +-------+
       |       |
       |       O
       |      -|-
       |      |
       |
    ==============
    """,
    """
       +-------+
       |       |
       |       O
       |      -|-
       |      | |
       |
    ==============
    """
]


def lecture_fichier():
    liste_mots = ["ISSOU", "POMME", "POIRE", "PATATE", "CUCKHOLD"]
    return liste_mots


def tirage(liste_mots):
    tirage = randint(0, len(liste_mots) - 1)
    mot = liste_mots[tirage]
    print(mot)
    return mot


def saisie():
    print('Saisissez une lettre')
    lettre_saisie = input()
    saisie_conforme = False
    while saisie_conforme is False:
        if len(lettre_saisie) == 1 and lettre_saisie.isalpha():
            saisie_conforme = True
        else:
            print('Veuillez saisir uniquement une seule lettre')
            lettre_saisie = input()
            pass
    return lettre_saisie.upper()


def mot_en_cours(lettres_deja_saisies, mot_complet):
    mot_en_cours = ''
    for lettre in mot_complet:
        if lettre in lettres_deja_saisies:
            mot_en_cours = mot_en_cours + ' ' + lettre + ' '
        elif lettre not in lettres_deja_saisies:
            mot_en_cours = mot_en_cours + ' _ '
    return mot_en_cours


def main():
    mot_mystere = tirage(lecture_fichier())
    mot_devine = '_ ' * len(mot_mystere)
    historique = set()
    nbFautes = 0
    nbJustes = 0
    while nbFautes < 6:
        print(tab[nbFautes])
        print(mot_devine)
        l = saisie()
        if l in historique:
            print('Lettre déjà utilisée')
            print(historique)
            pass
        else:
            historique.add(l)
            if l in mot_mystere:
                mot_devine = mot_en_cours(historique, mot_mystere)
                nbJustes += 1
                print(nbJustes)
                print('Bonne lettre!')
                print(mot_devine)
            elif l not in mot_mystere:
                nbFautes += 1
        if nbJustes == len(set(mot_mystere)):
            print('Vous avez gagné')
            return
    print(tab[nbFautes])
    print(mot_devine)
    print('Vous avez perdu')
    return


main()
Message édité le 02 juin 2020 à 15:59:38 par snakamoto
snakamoto
snakamoto
Niveau 10
02 juin 2020 à 16:07:25

hesite pas à poser des questions par contre

Message édité le 02 juin 2020 à 16:07:36 par snakamoto
Mouig
Mouig
Niveau 6
02 juin 2020 à 16:13:05

Merci beaucoup :)
Tout marche nickel :ok:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment