Trent Cimina

Hangman Game Code

Hangman Game

  • January 15, 2017 at 6:45 PM
  • Visible to public
#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()