2017-10-05 14 views
-4

これはこれまでのハングマンゲームのコードです。私は助けてください。だから、もし可能ならば、誰かが私のコードを修正することができるかどうかをまず考えてください。 1)文字をアンダースコアに置き換える方法がわかりません。したがって、ユーザーが正しい文字を入力するたびに、正しいアンダースコアを置き換える必要があります。 2)私は人が間違った手紙を推測する場合、人生をどのように切断するか分からない。 注:後で削除するテスト用に実際の単語が印刷されています。Python Hangman Lettersの置き換え

import time 
import random 

#words 

simpWords = ['triskaidekaphobia', 'spaghettification', 'sesquipedalian', 'floccinaucinihilipilification', 'deipnosophist'] 
medWords = ['erubescent', 'entomophogy', 'noctambulist', 'parapente', 'umbriferous'] 
hardWords = ['cat', 'house', 'degust', 'glaikit', 'otalgia'] 

simpWordsR = random.choice(simpWords) 
medWordsR = random.choice(medWords) 
hardWordsR = random.choice(hardWords) 


#welcome the user 

name = input("What is your name?") 
print ("Hello! " + name + ". Time to play Hangman") 

#wait for 1 second 
time.sleep(1) 

print ("") 

correctLetters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 

#picking levels 

gameMode = input('Choose a level - Easy (10 Guesses), Medium (8 Guesses) or Hard (7 Guesses)') 
if gameMode == str('easy'): 
    numberOfGuesses1 = 11 
    print ('') 
    print (list(simpWordsR)) 
    blanks = '_ ' * len(simpWordsR) 
    correctLetters = '' 
    for i in range(len(simpWordsR)): # replace blanks with correctly guessed letters 
    if simpWordsR[i] in correctLetters: 
     blanks = blanks[:i] + simpWordsR[i] + blanks[i+1:] 
    print (blanks) 

elif gameMode == str('medium'): 
    numberOfGuesses2 = 8 
    print ('') 
    print (list(medWordsR)) 
    blanks = '_ ' * len(medWordsR) 
    correctLetters = '' 
    for i in range(len(medWordsR)): # replace blanks with correctly guessed letters 
    if medWordsR[i] in correctLetters: 
     blanks = blanks[:i] + medWordsR[i] + blanks[i+1:] 
    print (blanks) 

elif gameMode == str('hard'): 
    numberOfGuesses3 = 7 
    print ('') 
    print (list(hardWordsR)) 
    blanks = '_ ' * len(hardWordsR) 
    correctLetters = '' 
    for i in range(len(hardWordsR)): # replace blanks with correctly guessed letters 
    if hardWordsR[i] in correctLetters: 
     blanks = blanks[:i] + hardWordsR[i] + blanks[i+1:] 
    print (blanks) 

time.sleep(1) 

print ("") 

numberOfGuesses1 -= 1 
print (numberOfGuesses1) 

while numberOfGuesses1 == 10: 
    guess = input("Guess a Character!") 

    if (guess in simpWordsR): 
    print ("Well Done! You Guessed it right!") 

    else: 
    print ("The letter is not in the word. Try Again!") 


if numberOfGuesses1 == 0: 
    print ("Game Finished. Maybe Try Again y/n.") 

ありがとうございました。私は実際にはPythonプログラミングの初心者です。私は他の例を試しましたが、何らかの理由で自分のコードでうまく動作せず、変数を変更しました。

+1

を –

+0

がSOへようこそ、あなたのコードを投稿してください。コードやコードへのリンクを掲載しないでください。あなたの質問を編集してください。コードをコピーしてあなたの質問に貼り付けてください。 [help]にアクセスし、[ask]を読んでください。 –

+0

私はそれを投稿しました – mysticalstudies

答えて

1

は、コード内のコメントを参照してください:

import time 
import random 

#words 

simpWords = ['triskaidekaphobia', 'spaghettification', 'sesquipedalian', 'floccinaucinihilipilification', 'deipnosophist'] 
medWords = ['erubescent', 'entomophogy', 'noctambulist', 'parapente', 'umbriferous'] 
hardWords = ['cat', 'house', 'degust', 'glaikit', 'otalgia'] 

# Just use one word, which will be set after user selects difficulty 
#simpWordsR = random.choice(simpWords) 
#medWordsR = random.choice(medWords) 
#hardWordsR = random.choice(hardWords) 


#welcome the user 

name = input("What is your name?") 
print ("Hello! " + name + ". Time to play Hangman") 

#wait for 1 second 
time.sleep(1) 

print ("") 

# Removed uppercase. We will only use lower case 
alphabet = 'abcdefghijklmnopqrstuvwxyz' 

#picking levels 

gameMode = input('Choose a level - Easy (10 Guesses), Medium (8 Guesses) or Hard (7 Guesses)').lower() 
if gameMode == 'easy': 
    numberOfGuesses = 11 
    theWord = random.choice(simpWords) 
    # Not sure what this is for....deleted 
    #correctLetters = '' 
    #for i in range(len(simpWordsR)): # replace blanks with correctly guessed letters 
    # if simpWordsR[i] in correctLetters: 
    # blanks = blanks[:i] + simpWordsR[i] + blanks[i+1:] 
    #print (blanks) 

elif gameMode == 'medium': 
    numberOfGuesses = 8 
    theWord = random.choice(medWords) 

else: 
    numberOfGuesses = 7 
    theWord = random.choice(hardWords) 

print(gameMode) 
print(theWord) # For debugging purposes 

# Since python strings are immutable, use a list 
blanks = ['_'] * len(theWord) 

# Need to keep a list of already guessed letters 
used_letters = [] 

time.sleep(1) 

print ("") 

# Move this to the loop 
#numberOfGuesses1 -= 1 
#print (numberOfGuesses1) 

#while numberOfGuesses1 == 10: 
while numberOfGuesses > 0: 
    print (numberOfGuesses) 
    print (' '.join(blanks)) 

    # get user input and convert to lower case 
    guess = input("Guess a Character!").lower() 

    # Make sure it's a letter 
    if not guess in alphabet: 
     print("Enter a letter...") 
    # Make sure not already guessed 
    elif guess in used_letters: 
     print("Already guessed that....") 
    # Valid guess. Check it 
    else: 
     used_letters.append(guess) 
     if (guess in theWord): 
      print ("Well Done! You Guessed it right!") 
      # Loop through and replace 
      for x in range(0, len(theWord)): 
       if theWord[x] == guess: 
        # Note: this works since theWord and blanks have the same length 
        blanks[x] = guess 
      # Check for success 
      if not '_' in blanks: 
       print("You win") 
       # End the loop 
       break 
     else: 
      print ("The letter is not in the word. Try Again!") 
      # Only decrement if incorrect 
      numberOfGuesses -= 1 

print ("Game Finished. Maybe Try Again y/n.") 
+1

'numberOfGuesses'は間違った推測でのみ減少するべきです。つまり、単独のループ条件として使用することはできません。 – Mark

+0

@マーク。おそらく。それはゲームデザイナーの責任です。 –

+0

OPから:「人が間違った手紙を推測した場合、人生をどのように切断するかわからない」 – Mark

関連する問題