Ejemplo n.º 1
0
def play_hangman():
    word = get_word()
    word_list = get_word_list(word)
    word_set = set(word_list)

    temp = ["-" for x in word_list]

    correct_guesses = []
    wrong_guesses = []

    max_guesses = get_number_of_guesses()
    num_guesses = 0

    if max_guesses == 20:
        difficulty = "EASY"
    elif max_guesses == 10:
        difficulty = "MEDIUM"
    else:
        difficulty = "HARD"

    print("\nThe word is {} letters long.".format(len(word_list)))
    print("- " * len(word))

    while True:
        guesses_left = max_guesses - num_guesses
        print("\nYou have {} guesses left.".format(guesses_left))

        guess = input("Enter a guess: ").upper()
        if check_guess(word_list, guess):
            if guess in wrong_guesses or guess in correct_guesses:
                print("\nYou have already guessed '{}'".format(guess))
                one_letter_guess(word_list, temp, guess)
                continue

            if len(guess) == len(word):
                if whole_word_guess(word, guess):
                    winner(word)
                    wins_and_losses.add_to_wins()
                    score = get_score(num_guesses, word)
                    history = History(word, 1, 0, difficulty, score)
                    history.add_to_history()
                    print("Score:", score)
                    break
                else:
                    loser_guessed_wrong_word(word)
                    wins_and_losses.add_to_losses()
                    history = History(word, 0, 1, difficulty, 0)
                    history.add_to_history()
                    print("Score: 0")
                    break

            if one_letter_guess(word_list, temp, guess):
                correct_guesses.append(guess)
                print("\n'{}' is in the word!".format(guess))
            else:
                wrong_guesses.append(guess)
                print("\n'{}' is not in the word :(".format(guess))
                num_guesses += 1

        if num_guesses == max_guesses:
            loser_ran_out_of_guesses(word)
            wins_and_losses.add_to_losses()
            history = History(word, 0, 1, difficulty, 0)
            history.add_to_history()
            print("Score: 0")
            break

        if len(correct_guesses) == len(word_set):
            winner(word)
            wins_and_losses.add_to_wins()
            score = get_score(num_guesses, word)
            history = History(word, 1, 0, difficulty, score)
            history.add_to_history()
            print("Score:", score)
            break

    choice = continue_or_not()
    if choice == "Y":
        play_hangman()
    elif choice == "N":
        print("Thank you for playing.\n")