#Trent Cimina
#Hangman
import random
from tkinter import *
def draw_gallows():
#Draw Gallows
c.create_line(100,800, 500,800, width=10)
c.create_line(100,800, 100,900, width=10)
c.create_line(500,800, 500,900, width=10)
c.create_line(300,800, 300,200, width=10)
c.create_line(300,200, 500,200, 500,300, width=10)
def draw_head():
c.create_oval(450,300, 550,400, width=5)
def draw_torso():
c.create_line(500,400, 500,600, width=5)
def draw_rightleg():
c.create_line(500,600, 425,700, width=5)
def draw_leftleg():
c.create_line(500,600, 575,700, width=5)
def draw_rightarm():
c.create_line(500,450, 425,400, width=5)
def draw_leftarm():
c.create_line(500,450, 575,400, width=5)
def lines():
#Underlines for the letters
x = 60
counter = 0
while counter < len(puzzle):
if puzzle[counter] in legal_chars:
c.create_line(x,100, (x+10), 100)
x = x + 10
counter = counter + 1
elif puzzle[counter] == "'":
c.create_text(x,70, text = puzzle[counter])
x = x + 10
counter = counter + 1
else:
c.create_text(x,100,text = puzzle[counter])
x = x + 10
counter = counter + 1
def read_phrase():
#This generates the puzzle / secret phrase
f = open('hangman.txt')
selected_line = random.randrange(0, 370) #change this to a random value between 0 and 370
for i in range(selected_line-1):
f.readline()
puzzle = f.readline()
f.close()
return puzzle
def handle_keypress(event):
global mistake
global right_time
global number_of_letter
if event.char in legal_chars:
for i in range(len(secret_phrase)):
if event.char == secret_phrase[i]:
c.create_text(200+i*20, 100, text=event.char)
right_time +=1
if right_time == number_of_letter:
c.create_text(1000, 300, text="Congrats! Winner!")
main_window.after(2000,main_window.destroy)
if event.char in legal_chars:
if event.char not in secret_phrase:
mistake +=1
wrong()
c.create_text(1000+mistake*20, 100, text=event.char)
def wrong():
if mistake == 1:
draw_head()
if mistake == 2:
draw_torso()
if mistake == 3:
draw_rightarm()
if mistake == 4:
draw_leftarm()
if mistake == 5:
draw_rightleg()
if mistake == 6:
draw_leftleg()
c.create_text(1000, 300, text="Aw! Game Over!")
for i in range (len(secret_phrase)):
if secret_phrase[i] in legal_chars:
c.create_text(204+i*20, 105, text=secret_phrase[i])
main_window.after(2000,main_window.destroy)
legal_chars = 'abcdefghijklmnopqrstuvwxyz'
secret_phrase = read_phrase()
main_window = Tk()
main_window.title("Hangman")
c = Canvas(main_window, width=1200, height=1200)
c.pack()
c.bind('<Key>', handle_keypress)
c.focus_set()
number_of_letter = 0
right_time = 0
mistake = 0
lines()
draw_gallows()
mainloop()