import tkinter as tk
from tkinter import messagebox
import random

class HangmanGame:
    def __init__(self, root):
        self.root = root
        self.root.title("Hangman Game")

        self.word_list = ["python", "hangman", "computer", "programming", "developer", "code"]

        self.canvas = tk.Canvas(root, width=300, height=300)
        self.canvas.pack()

        self.new_game_button = tk.Button(root, text="New Game", command=self.start_new_game)
        self.new_game_button.pack()

        self.start_new_game()

    def start_new_game(self):
        self.word_to_guess = random.choice(self.word_list)
        self.guesses_left = 6
        self.guessed_letters = set()

        self.canvas.delete("all")
        self.draw_gallows()

        self.display_word()

    def draw_gallows(self):
        
        self.canvas.create_line(50, 250, 150, 250)
        self.canvas.create_line(100, 250, 100, 50)
        self.canvas.create_line(100, 50, 200, 50)
        self.canvas.create_line(200, 50, 200, 80)

    def display_word(self):
        display = ""
        for letter in self.word_to_guess:
            if letter in self.guessed_letters:
                display += letter + " "
            else:
                display += "_ "
        self.canvas.create_text(150, 200, text=display)

    def guess_letter(self, letter):
        if letter in self.guessed_letters:
            messagebox.showinfo("Hangman Game", "You already guessed this letter.")
            return

        self.guessed_letters.add(letter)
        if letter not in self.word_to_guess:
            self.guesses_left -= 1
            self.draw_hangman()

        self.canvas.delete("all")
        self.draw_gallows()
        self.display_word()

        if self.check_win():
            messagebox.showinfo("Hangman Game", "Congratulations! You guessed the word.")
            self.start_new_game()
        elif self.check_loss():
            messagebox.showinfo("Hangman Game", f"Sorry, you lost. The word was {self.word_to_guess}.")
            self.start_new_game()

    def draw_hangman(self):
        
        if self.guesses_left == 5:
            self.canvas.create_oval(180, 80, 220, 120)
        elif self.guesses_left == 4:
            self.canvas.create_line(200, 120, 200, 180)
        elif self.guesses_left == 3:
            self.canvas.create_line(200, 140, 180, 160)
        elif self.guesses_left == 2:
            self.canvas.create_line(200, 140, 220, 160)
        elif self.guesses_left == 1:
            self.canvas.create_line(200, 180, 180, 220)
        elif self.guesses_left == 0:
            self.canvas.create_line(200, 180, 220, 220)

    def check_win(self):
        for letter in self.word_to_guess:
            if letter not in self.guessed_letters:
                return False
        return True

    def check_loss(self):
        return self.guesses_left == 0

root = tk.Tk()
game = HangmanGame(root)
root.mainloop()