Lucas
Lucas

Reputation: 54

Adding a one letter limit to a hangman game

Upon creating the hangman game, I realized that the user can get away with using more than one letter at at a time, while using just one life. However, I do not know where/how to make it so the program rejects the guess, if it has more than one letter. Any help?

import time
print('Lets play hangman')
print("""
       _______
       |    |
       |    O
       |    |
       |  \- -/
       |    |
       |   / \\
       |  /   \\
   ____|____
   \n""")

print("""
you get 7 lives to guess the letters in the word. if you guess
incorrectly more of the hangman will appear and you lose a life. when you have
used your 7 lives, the man will have hung and you will have lost. If you guess a
correct letter, it will be show and if you guess the word without using the 7
turns, you win!
\n""")

easy_words = ['string', 'loop', 'python', 'print', 'run']
medium_words = ['module', 'input', 'logic', 'output']
hard_words = ['graphics window', 'variable', 'iteration', 'modules']
random_words = ['string', 'loop', 'python', 'print', 'run', 'graphics window', 'variable', 'iteration', 'modules', 'module', 'input', 'logic', 'output    ']
time.sleep(2)
print ("What level would you like to play at? Easy, Medium or Hard or Random?")
level_of_difficulty = input()
time.sleep(2)
print ("The program is now generating your word...")
if level_of_difficulty == 'Easy':
    generated_word = random.choice(easy_words)
elif level_of_difficulty == 'Medium':
    generated_word = random.choice(medium_words)
elif level_of_difficulty == 'Hard':
    generated_word = random.choice(hard_words)
elif level_of_difficulty == 'Random':
    generated_word = random.choice(random_words)
else:
    generated_word = random.choice(random_words)
guessed = ''

lives = 7


while lives > 0:

    missed = 0
print()
    for letter in generated_word:
        if letter in guessed:
            print (letter,end=' ')
        else:
            print ('_',end=' ')
            missed = missed + 1
    if missed == 0:
        print ('\n\nYou win!')  
        quit()
        break
    guess=input("please guess a letter:")

    guessed = guessed + guess
        if guess not in generated_word:

            print ('\n that letter is not in this word, your lives have been decreased by 1.')
        print ('please try another letter.')
        lives = lives - 1 
        missed = missed + 1

        print('your new lives value is')

        print(lives)

        if lives < 7:
            print('''   _______
   |    |   ''')
            if lives < 6:
                print('   |    O    ') 
            if lives < 5:            
                print('   |    |    ')
            if lives < 4:
                print('   |  \- -/  ')
            if lives < 3: 
                print('   |    |    ')
            if lives < 2:
                print('   |   / \\  ')
            if lives < 1:
                print('   |  /   \\ ')
            if lives == 0:
             print('___|___      ')

             print('GAME OVER! You have run out of lives and lost the game')
             print('the secret word was')
             print(generated_word)
             quit()

At time of asking question, I did not have access to my code so I had to copy/paste from my previous questions. This means that there may be a couple of mistakes in my code. Apologies.

Upvotes: 1

Views: 799

Answers (2)

Chris Larson
Chris Larson

Reputation: 1724

To accept only one letter, and warn the user in the case of multiple letters, do the following:

guess = ""

while len(guess) != 1:
    guess=input("please guess a letter:")
    if len(guess) != 1:
        print( "Please guess only one letter.")

Upvotes: 2

jeff carey
jeff carey

Reputation: 2373

Change your guess input to:

guess = ""
while len(guess) != 1:
    guess=input("please guess a letter:")

Upvotes: 7

Related Questions