import random

def select_word():
    word_list = ["apple", "banana", "cherry", "dragonfruit", "elderberry", "fig", "grapefruit", "honeydew"]
    return random.choice(word_list)

def display_word(word, guessed_letters):
    display = ""
    for letter in word:
        if letter in guessed_letters:
            display += letter + " "
        else:
            display += "_ "
    return display

def display_hangman(incorrect_guesses):
    stages = [
        """
           --------
           |      |
           |      O
           |     \\|/
           |      |
           |     / \\
        """,
        """
           --------
           |      |
           |      O
           |     \\|/
           |      |
           |     /
        """,
        """
           --------
           |      |
           |      O
           |     \\|/
           |      |
           |
        """,
        """
           --------
           |      |
           |      O
           |     \\|
           |      |
           |
        """,
        """
           --------
           |      |
           |      O
           |      |
           |      |
           |
        """,
        """
           --------
           |      |
           |      O
           |
           |
           |
        """,
        """
           --------
           |      |
           |
           |
           |
           |
        """
    ]
    return stages[incorrect_guesses]

def play_again():
    response = input("Do you want to play again? (yes/no): ")
    return response.lower() == "yes"

def play_hangman():
    word = select_word()
    guessed_letters = []
    incorrect_guesses = 0

    while True:
        print(display_hangman(incorrect_guesses))
        print(display_word(word, guessed_letters))

        guess = input("Guess a letter: ")
        guess = guess.lower()

        if guess.isalpha() and len(guess) == 1:
            if guess in guessed_letters:
                print("You've already guessed that letter!")
            elif guess in word:
                print("Correct guess!")
                guessed_letters.append(guess)
                if all(letter in guessed_letters for letter in word):
                    print("Congratulations! You've guessed the word:", word)
                    break
            else:
                print("Incorrect guess!")
                incorrect_guesses += 1
                if incorrect_guesses == len(display_hangman(0)):
                    print(display_hangman(incorrect_guesses))
                    print("Game over! The word was:", word)
                    break
        else:
            print("Invalid guess! Please enter a single letter.")

    if play_again():
        print()
        play_hangman()

print("Let's play Hangman!")
play_hangman()