Jeu du pendu

Résolu/Fermé
jojo - Modifié le 12 mai 2022 à 13:26
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 12 mai 2022 à 13:33
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 !
A voir également:

2 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
11 mai 2022 à 21:37
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
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 12 mai 2022 à 13:35
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