Sam Burt

Hangman Game Code

You need to copy the text document path in order to use random

  • January 10, 2017 at 8:17 AM
  • Visible to public
import random
from tkinter import *
phrase_list = []
phrase = ""
window = Tk()
window.title("stuff")
canvas = Canvas(window, width = 1000, height = 800)
canvas.pack()
phrase = "jojojojojo"
test_string = ""
legal_char = "abcdefghijklmnopqrstuvwxyz"
part_number = 0
game_over = False

def dead():
    #resets the game when it's over
    global game_over, part_number
    game_over = True
    for x in range(len(phrase)):
        canvas.create_text(500 - 5*len(phrase)+(x*10), 647, text = phrase[x], tag = "text", fill = "red")
    print("oh, too bad, you lose try again!!!")
    part_number = -1
def drawbodypart():
    #draws the person
    global part_number
    if(part_number == 0):
        canvas.create_oval(650, 200, 750, 300, tag = "person")
    if(part_number == 1):
        canvas.create_oval(675, 220, 690, 235, tag = "person")
    if(part_number == 2):
        canvas.create_oval(710, 220, 725, 235, tag = "person")
    if(part_number == 3):
        canvas.create_line(675, 265, 725, 265, tag = "person")
    if(part_number == 4):
        canvas.create_line(700, 300, 700, 500, tag = "person")
    if(part_number == 5):
        canvas.create_line(650, 400, 750, 400, tag = "person")
    if(part_number == 6):
        canvas.create_line(700, 500, 650, 570, tag = "person")
    if(part_number == 7):
        canvas.create_line(700, 500, 750, 570, tag = "person")
        dead()
    part_number += 1
    
def test_letter(character):
    #checks the letter inputted
    global legal_char, game_over, test_string
    y = 0
    if game_over:
        initialize()
    else:
        if(character.char in legal_char):
            for x in range(len(phrase)):
                if(character.char == phrase[x]):
                    canvas.create_text(500 - 5*len(phrase)+(x*10), 647, text = character.char, tag = "text")
                    test_string += character.char
                    y = 1
            legal_char = legal_char.replace(character.char, "")
            canvas.create_text((ord(character.char)-97) * 10 + 300, 750, text = "X", fill = "red", tag = "text")
            if(y == 0):
                drawbodypart()
            else:
                y = 0
                if(len(test_string) == len(phrase.replace(" ",""))):
                    print("yey, u win. press a letter to keep playing")
                    game_over = True
                
        
def initialize():
    #initializes the game
    canvas.delete("person", "text")
    global legal_char, game_over, test_string, phrase, part_number
    part_number = 0
    game_over = False
    legal_char = "abcdefghijklmnopqrstuvwxyz"
    phrase = input("Hangman phrase (hide this from the player): ").lower()
    if(phrase.lower() == "random"):
        phrase = phrase_list[random.randrange(len(phrase_list))].lower()
    else:
        for x in range(len(phrase.replace(" ",""))):
            if(phrase.replace(" ","")[x] not in legal_char):
                print("That phrase has an illegal character in it!!! (press a letter to try again)")
                game_over = True
    canvas.create_line(400, 600, 600, 600)
    canvas.create_line(500, 600, 500, 100, 700, 100, 700, 200)
    canvas.bind("<Key>", test_letter)
    canvas.focus_set()
    test_string = ""
    for x in range(len(phrase)):
        if(" " != phrase[x]):
            canvas.create_text(500 - 5*len(phrase)+(x*10), 650,text = "_", tag = "text")
        else:
            canvas.create_text(500 - 5*len(phrase)+(x*10), 650,text = " ", tag = "text")
    for x in range(26):
        canvas.create_text(x * 10 + 300, 750, text = chr(x+65), tag = "text")

def main():
    #just main
    with open("/Users/burts/Desktop/Kappa/CopyPathnameHere.txt", 'r') as file:
        for line in file:
            phrase_list.append(line[:-1])        
    initialize()
    mainloop()
main()