Jeu du pendu

Résolu
jojo -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je débute et j'ai besoin d'aide sur mon programme qui réalise le jeu du pendu. J'aimerais pouvoir demander au joueur s'il veut rejouer. Cependant je ne sais pas comment faire.

Voici mon programme :

import random
choix = ["casserole", "cuillere", "patate", "souris", "laitue", "hareng", "jambon", "pharynx", "phoque",  "langue", "stylo", "agent", "fromage", "whisky", "billet", "laser", "joystick", "joyeux", "cahier", "camping", "argent", "rivage","physique"]

solution = (choix[random.randint(1,22)])
tentatives = 7
affichage = ""
lettres_trouvees = ""

for l in solution:
  affichage = affichage + "_ "

print(">> Bienvenue dans le pendu <<")

play = int(input("Tape 1 si tu veux jouer ! \n "))
if play == 1 :  
    prénom=input("Quel est ton nom ?")
    print("\n")
    print("Salut", prénom)

while tentatives > 0 :
  print("\nMot à deviner : ", affichage)
  proposition = input("proposez une lettre : ")[0:1].lower()

  if proposition in solution:
      lettres_trouvees = lettres_trouvees + proposition
      print("-> Bien vu!")
  else:
    tentatives = tentatives - 1
    print("-> Nope\n")
    if tentatives==0:
        print(" ==========Y= ")
    if tentatives<=1:
        print(" ||/       |  ")
    if tentatives<=2:
        print(" ||        0  ")
    if tentatives<=3:
        print(" ||       /|\ ")
    if tentatives<=4:
        print(" ||        |")
    if tentatives<=5:                    
        print("/||       / \  ")
    if tentatives<=6:
        print("==============\n")

  affichage = ""
  for x in solution:
      if x in lettres_trouvees:
          affichage += x + " "
      else:
          affichage += "_ "

  if "_" not in affichage:
      print(">>> Gagné! <<<")
      break
    
print("\n    * Fin de la partie *    ")


Aidez-moi, s'il vous plaît !

2 réponses

  1. Utilisateur anonyme
     
    Bonjour
    En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
    Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
    On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.

    Merci aussi de faire un effort de rédaction, l'écriture sms n'a pas forcement le même sens pour tous les francophones.

    En plus indiquer une urgence sur un forum est au mieux inutile, les gens passent voir les messages quand ils passent et cette mention ne peut rien y faire.

    Au pire, ça peut te faire perdre de l'aide, en effet ça donne l'impression que tu t'y prends au dernier moment pour ton travail, et certains peuvent se dire qu'il fallait t'y prendre en temps et en heure et ne même pas ouvrir ton message.

    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Bonjour,

    Merci de tenir compte pour tes prochains messages des remarques de Whismeril, j'ai depuis corrigé ton message pour qu'il soit plus conforme à ce qu'on attend des gens qui posent des questions.

    Pour revenir à ton problème, il faut simplement envelopper l'ensemble de ton programme dans une fonction (appelons-la
    game()
    à que tu répètes en fonction de ce que choisi le joueur.

    Les boucles
    do ... while
    n'existant pas en python, il faudra se contenter d'un
    while
    . Voici à quoi pourrait ressembler ton code :

    def game():
        print("game")
        # ... Ici va le code du jeu
    
    play = True
    while play:
        game()
    
        answer = None
        while answer != "y" and answer != "n":
            answer = input("replay (y/n)?")
        play = (answer == "y")
    
    print("quit")


    Bonne chance
    0