Simple python jeu du pendu

Je vais avoir un peu de mal avec mon python bourreau de jeu. Je crois que j'ai les mécanismes de bas pour la plupart (pas 100% confiance) mais j'ai un peu de problèmes quand il s'agit de l'impression du conseil d'administration chaque fois que l'utilisateur entre dans une lettre. Il est censé trouver le répertoire où est stocké, puis aller à l'index et de le remplacer avec de l'deviné lettre. Pour le moment, il ne se substitue pas à la lettre et quand il réimpressions le conseil d'administration après l'aurez deviné lettre qu'il ne cesse de l'ajout de plus d'étoiles à la fin. Par exemple, si le mot est en 6 lettres il imprime 6 étoiles. Lorsque vous deviner une lettre, il réimpressions le conseil d'administration avec 12 étoiles et ainsi de suite. Comment puis-je faire remplacer la lettre quand il est dans la parole et l'impression que même avec cette lettre remplie. Aussi quand le jeu est terminé comment puis-je l'invite à entrer s'ils veulent continuer à jouer et de la boucle de l'ensemble du jeu, une fois de plus? Le code est ci-dessous:

import random
listOfWords = ("hangman", "chairs", "backpack", "bodywash", "clothing", "computer", "python", "program", "glasses", "sweatshirt", "sweatpants", "mattress", "friends", "clocks", "biology", "algebra", "suitcase", "knives", "ninjas", "shampoo")
randomNumber = random.randint(0, len(listOfWords) - 1)
guessWord = listOfWords[randomNumber]
theBoard = []
wrong = []
guessedLetter = int(0)
#Will create the board using a new list and replace them with stars
def makeBoard(word):
for x in word: #will go through the number of letters in the word that is chosen and for each letter will append a star into theBoard list
theBoard.append('*') 
return ''.join(theBoard) #Will print the list without having the [] and the commas
def guessing(letter): #This is for guessing the letters
win = int(0) #Will be used to see if the user wins
count = int(0) #Will be used to replace the star with a letter
if letter.lower() in guessWord: # converts to lowercase and goes through the word 
guessedLetter = guessWord.index(letter) #create a variable called guessedLetter that will take the index of the letter guessed by the user
while (count != guessedLetter): #while loop to look for the index of the guessed letter
count += 1
if (count == guessedLetter): # will go into the board and replace the desired index with the letter if it matches
theBoard[count] = letter
for x in theBoard: # loop to go through theBoard to see if any '*' are there. If none are found it will say you win
if (x != '*'):
win += 1
if (win == len(theBoard)):
print("You win!")
def main():
print(guessWord) 
level = input("Enter a difficulty level: ")
print("The word is: " + makeBoard(guessWord))
if (level == '1'):
print("You have selected the easy difficulty.")
while (len(wrong) != 9):
userGuess = input("Enter in the letter you want to guess: ")
guessing(userGuess)
if userGuess not in guessWord:
wrong.append(userGuess)
print("You have " + str(len(wrong)) + " guesses. Guessed letters: " + str(wrong))
if (len(wrong) == 9):
level = input("You have lost. If you would like to play again then enter in the difficulty level, or 4 to exit")
if (level != 4):
randomNewNumber = random.randint(0, len(listOfWords) - 1)
guessNewWord = listOfWords[randomNewNumber]
if (level == 4):
sys.exit(0)
if (level == '2'):
print("You have selected the medium difficulty.")
print("The word is: " + makeBoard(guessWord))
while (len(wrong) != 7):
userGuess = input("Enter in the letter you want to guess: ")
guessing(userGuess)
if userGuess not in guessWord:
wrong.append(userGuess)
print("You have " + str(len(wrong)) + " guesses. Guessed letters: " + str(wrong))
if (level == '3'):
print("You have selected the hard difficulty.")
print("The word is: " + makeBoard(guessWord))
while (len(wrong) != 5):
userGuess = input("Enter in the letter you want to guess: ")
guessing(userGuess)
if userGuess not in guessWord:
wrong.append(userGuess)
print("You have " + str(len(wrong)) + " guesses. Guessed letters: " + str(wrong))
main()    

EDIT: j'ai résolu le problème à ce sujet l'affichage avec la bonne lettre, sauf pour la première. Exemple si le mot est python il arrive que *ython même si vous devinez la p il ne s'affiche pas. Voici le code qui ne le remplacement de:

def guessing(letter): #This is for guessing the letters
win = int(0) #Will be used to see if the user wins
count = int(0) #Will be used to replace the star with a letter
guessedLetter = guessWord.index(letter) #create a variable called guessedLetter that will take the index of the letter guessed by the user
if letter.lower() in guessWord: # converts to lowercase and goes through the word 
while (count != guessedLetter): #while loop to look for the index of the guessed letter
count = count + 1
if (count == guessedLetter): # will go into the board and replace the desired index with the letter if it matches
theBoard[count] = letter
print("The word is: " + ''.join(theBoard))
for x in theBoard: # loop to go through theBoard to see if any '*' are there. If none are found it will say you win
if (x != '*'):
win += 1
if (win == len(theBoard)):
print("You win!")
  • Parce que vous avez count = 0 et guessWord.index('p') donner à 0 donc while count != guessedLetter est Faux et que le script ne va pas dans la boucle. Utilisation count = -1.
InformationsquelleAutor user2951107 | 2013-11-04