timnoot

hangman game 2.0 new features + gui with tkinter

Apr 5th, 2021
576
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import random
  2. from tkinter import *
  3.  
  4. root = Tk()
  5. root.title("Hangman by timnoot") # If you have questions dm me on discord timnoot#8017
  6. def total():
  7.  
  8.     filestart = open("word_list.txt", "a")
  9.     filestart.write("")
  10.     filestart.close()
  11.  
  12.     result = []
  13.  
  14.     word_listel = repr(open("word_list.txt", 'r').read())
  15.     for i in word_listel:
  16.         for r in i:
  17.  
  18.             if r in "'":
  19.                 pass
  20.             else:
  21.                 result.append(r)
  22.     separator = ''
  23.     result1 = (separator.join(result))
  24.     separator1 = ""
  25.  
  26.     words_tulip = result1.split(", ")
  27.  
  28.     class score:
  29.         def __init__(self, tries, separator_in_list_form, word1):
  30.             self.tries = 0
  31.             self.separator_in_list_form = []
  32.             self.word1 = random.choice(words_tulip)
  33.  
  34.     score = score(0, [], random.choice(words_tulip))
  35.  
  36.     def destroy1():
  37.         for widget in root.winfo_children():
  38.             widget.destroy()
  39.  
  40.     def Welcome():
  41.  
  42.         def on_after():
  43.             welcome.configure(text="What would you like to do?")
  44.  
  45.         def on_after1():
  46.             welcome.configure(text="Choose something already smh")
  47.  
  48.         welcome = Label(root, text="Welcome to Hangman by timnoot", width=35, borderwidth=5, fg="Red",
  49.                         font=("Courier", 15))
  50.         welcome.grid(row=0, column=0, columnspan=2)
  51.  
  52.         welcome.after(10000, on_after)
  53.         welcome.after(70000, on_after1)
  54.         buttonchange_word_list1 = Button(root, text="Change word list", padx=100, pady=200, borderwidth=5,
  55.                                          command=lambda: [destroy1(), buttonchange_word_list()])
  56.         button_play = Button(root, text="Play Hangman", padx=100, pady=200, borderwidth=5,
  57.                              command=lambda: [destroy1(), play1()])
  58.         buttonchange_word_list1.grid(row=2, column=0, columnspan=1)
  59.         button_play.grid(row=2, column=1, columnspan=1)
  60.  
  61.     Welcome()
  62.  
  63.     def play1():
  64.         if score.tries == 0:
  65.             score.tries += 10
  66.         def play(words_tulip):
  67.             word1 = score.word1
  68.             length_word = len(word1)
  69.             length = "The length of the word is: " + str(len(word1))
  70.             welcomelabel = Label(root, text=length, width=35, borderwidth=5, fg="Red", font=("Courier", 15))
  71.  
  72.             def showword():
  73.                 destroy1()
  74.                 label69 = Label(root, text="The word was " + word1, width=35, borderwidth=5, fg="Red",
  75.                                 font=("Courier", 15))
  76.                 label69.grid(row=0, column=0, columnspan=2)
  77.                 button3 = Button(root, text="Back", pady=20, padx=75, borderwidth=5,
  78.                                  command=lambda: [destroy1(), total()])
  79.                 button3.grid(row=2, column=0, columnspan=2, sticky="NSEW")
  80.  
  81.             if length_word == 0:
  82.                 destroy1()
  83.                 welcomelabel = Label(root, text="You don't have any words set!", width=35, borderwidth=5,
  84.                                      fg="Red", font=("Courier", 15))
  85.                 welcomelabel.grid(row=0, column=0, columnspan=2)
  86.  
  87.                 buttongoback = Button(root, text="Go back", pady=30, borderwidth=5,
  88.                                       command=lambda: [destroy1(), Welcome()])
  89.                 buttongoback.grid(row=1, column=0, columnspan=1, sticky="NSEW")
  90.                 setwords = Button(root, text="Set words", pady=30, borderwidth=5,
  91.                                   command=lambda: [destroy1(), addwords()])
  92.                 setwords.grid(row=1, column=1, columnspan=1, sticky="NSEW")
  93.  
  94.             else:
  95.                 def second(word1):
  96.  
  97.                     welcomelabel.grid(row=0, column=0, columnspan=2)
  98.                     labeltop2 = Label(root, text="You have " + str(score.tries) + " guess(es) left", width=35,
  99.                                       borderwidth=5,
  100.                                       fg="#FF017B",
  101.                                       font=("Courier", 14))
  102.                     labeltop2.grid(row=1, column=0, columnspan=2)
  103.                     goback = Button(root, text="Go back", pady=10, padx=75, borderwidth=5,
  104.                                     command=lambda: [destroy1(), total()])
  105.                     goback.grid(row=4, column=0, columnspan=1, sticky="NSEW")
  106.                     submit = Button(root, text="Submit guess", pady=10, padx=75, borderwidth=5,
  107.                                     command=lambda: [myClick()])
  108.                     submit.grid(row=4, column=1, columnspan=1, sticky="NSEW")
  109.  
  110.                     words1 = ""
  111.                     words1 = Entry(root, width=40, font=("Courier", 13))
  112.                     words1.grid(row=3, column=0, columnspan=2, sticky="NSEW")
  113.                     separator6 = ""
  114.                     separator_in_list_form = []
  115.  
  116.                     def myClick(event=None):
  117.                         guess = ""
  118.                         guess = words1.get()
  119.                         length_guess = len(guess)
  120.                         words1.delete(0, END)
  121.                         space_found = False
  122.                         labeltop = Label(root, text="", width=35, borderwidth=5, fg="#FF017B", font=("Courier", 14))
  123.                         labeltop2 = Label(root, text="You have " + str(score.tries) + " guess(es) left.", width=35,
  124.                                           borderwidth=5, fg="#FF017B", font=("Courier", 14))
  125.                         labeltop2.grid(row=1, column=0, columnspan=2)
  126.  
  127.                         number_found = False
  128.                         for index in guess:
  129.                             if index.isnumeric() is True:
  130.                                 number_found = True
  131.                             elif " " in index:
  132.                                 space_found = True
  133.  
  134.                         if number_found is True:
  135.                             labeltop = Label(root, text="That is a number!", width=35, borderwidth=5, fg="#FF017B",
  136.                                              font=("Courier", 14))
  137.                             labeltop.grid(row=2, column=0, columnspan=2)
  138.  
  139.                         elif guess == word1:
  140.                             destroy1()
  141.                             win_screen()
  142.  
  143.                         elif space_found is True:
  144.                             labeltop = Label(root, text="There is a space in your guess!", width=35, borderwidth=5,
  145.                                              fg="#FF017B", font=("Courier", 14))
  146.                             labeltop.grid(row=2, column=0, columnspan=2)
  147.  
  148.                         elif guess == "":
  149.                             labeltop = Label(root, text="You didn't type anything", width=35, borderwidth=5,
  150.                                              fg="#FF017B", font=("Courier", 14))
  151.                             labeltop.grid(row=2, column=0, columnspan=2)
  152.  
  153.                         elif score.tries == 1:
  154.                             destroy1()
  155.                             button1 = Button(root, text="Add 5 tries", pady=20, padx=75, borderwidth=5,
  156.                                               command=lambda: [add5(), play(words_tulip), button1.destroy(),
  157.                                                                button2.destroy(), button3.destroy(),
  158.                                                                label690.destroy()])
  159.                             button1.grid(row=1, column=1, columnspan=1, sticky="NSEW")
  160.                             button2 = Button(root, text="Play again", pady=20, padx=75, borderwidth=5,
  161.                                               command=lambda: [destroy1(), total()])
  162.                             button2.grid(row=1, column=2, columnspan=1, sticky="NSEW")
  163.                             button3 = Button(root, text="Show the word", pady=20, padx=75, borderwidth=5,
  164.                                              command=lambda: [destroy1(), showword()])
  165.                             button3.grid(row=2, column=1, columnspan=2, sticky="NSEW")
  166.                             label690 = Label(root, text="You lost!", width=35, borderwidth=5, fg="Red",
  167.                                             font=("Courier", 15))
  168.                             label690.grid(row=0, column=1, columnspan=2)
  169.  
  170.                         elif length_guess >= 2:
  171.                             score.tries -= 1
  172.                             labeltop2 = Label(root, text="You have " + str(score.tries) + " guess(es) left.", width=35,
  173.                                               borderwidth=5, fg="#FF017B", font=("Courier", 14))
  174.                             labeltop2.grid(row=1, column=0, columnspan=2)
  175.                             labeltop.config(text="'" + guess + "' is not the word")
  176.                             labeltop.grid(row=2, column=0, columnspan=2)
  177.  
  178.                         else:
  179.                             if guess in word1:
  180.                                 separator_in_list_form = score.separator_in_list_form
  181.  
  182.                                 def e(word1, guess, separator6, separator_in_list_form):
  183.                                     guess = guess
  184.                                     separator1 = separator6
  185.                                     if "_" not in separator_in_list_form:
  186.                                         for index in word1:
  187.                                             separator_in_list_form.append("_")
  188.                                     for index in word1:
  189.                                         separator1 = separator1 + "_"
  190.                                     for index in range(0, len(word1)):
  191.                                         if guess == word1[index]:
  192.                                             separator_in_list_form[index] = guess
  193.                                             separator1 = ''
  194.                                             separator1 = separator1.join(separator_in_list_form)
  195.                                         if index == len(word1) -1:
  196.                                             welcomelabel.config(text=separator1)
  197.                                             if separator1 == word1:
  198.                                                 destroy1()
  199.                                                 win_screen()
  200.                                                 break
  201.                                             welcomelabel.grid(row=0, column=0, columnspan=2)
  202.                                             break
  203.                                 e(word1, guess, separator6, separator_in_list_form)
  204.                             elif guess not in word1:
  205.                                 second(word1)
  206.                                 score.tries -= 1
  207.                                 labeltop2 = Label(root, text="You have " + str(score.tries) + " guess(es) left.",
  208.                                                   width=35,
  209.                                                   borderwidth=5, fg="#FF017B", font=("Courier", 14))
  210.                                 labeltop2.grid(row=1, column=0, columnspan=2)
  211.                                 labeltop = Label(root, text="The letter " + guess + " is not in the word.", width=35,
  212.                                                  borderwidth=5, fg="#FF017B", font=("Courier", 14))
  213.                                 labeltop.grid(row=2, column=0, columnspan=2)
  214.                             else:
  215.                                 destroy1()
  216.                                 win = Label(root, text="Something went wrong", width=35, borderwidth=5, fg="Red",
  217.                                             font=("Courier", 30))
  218.                                 win.grid(row=0, column=0, columnspan=2)
  219.                                 buttongoback = Button(root, text="Play again", pady=50, padx=100, borderwidth=5,
  220.                                                       command=lambda: [destroy1(), total()])
  221.                                 buttongoback.grid(row=1, column=0, columnspan=2, sticky="NSEW")
  222.                                 Welcome()
  223.  
  224.                     root.bind('<Return>', myClick)
  225.  
  226.                 second(word1)
  227.  
  228.         play(words_tulip)
  229.  
  230.     def win_screen():
  231.         def change():
  232.             win.configure(bg='blue')
  233.             win.after(10000, change_back)
  234.  
  235.         def change_back():
  236.             win.configure(bg='green')
  237.             win.config(text="\o> You won! <o/")
  238.  
  239.         win = Label(root, text="<o/ You won! \o>", width=35, borderwidth=5, fg="Red", font=("Courier", 30))
  240.         win.grid(row=0, column=0, columnspan=2)
  241.         buttongoback = Button(root, text="Play again", pady=50, padx=100, borderwidth=5,
  242.                               command=lambda: [destroy1(), total()])
  243.         buttongoback.grid(row=1, column=0, columnspan=2, sticky="NSEW")
  244.         change()
  245.  
  246.     def add5():
  247.         score.tries = 5
  248.  
  249.     def viewlist():
  250.         file = open("word_list.txt", "r")
  251.         content1 = file.readlines()
  252.         file.close()
  253.         length_list = len(words_tulip)
  254.         content = list(set(words_tulip))
  255.  
  256.         if content1 == []:
  257.             destroy1()
  258.             welcomelabel = Label(root, text="You don't have any words set!", width=35, borderwidth=5,
  259.                                  fg="Red", font=("Courier", 15))
  260.             welcomelabel.grid(row=0, column=0, columnspan=2)
  261.  
  262.             buttongoback = Button(root, text="Go back", pady=30, borderwidth=5,
  263.                                   command=lambda: [destroy1(), Welcome()])
  264.             buttongoback.grid(row=1, column=0, columnspan=1, sticky="NSEW")
  265.             setwords = Button(root, text="Set words", pady=30, borderwidth=5,
  266.                               command=lambda: [destroy1(), addwords()])
  267.             setwords.grid(row=1, column=1, columnspan=1, sticky="NSEW")
  268.  
  269.         else:
  270.             listviewtittle = Label(root, text="Current list", width=35, borderwidth=5, fg="Red", font=("Courier", 15))
  271.             buttongoback = Button(root, text="Go back", pady=30, borderwidth=5,
  272.                                   command=lambda: [destroy1(), buttonchange_word_list()])
  273.             whattodo = Label(root, text=content, borderwidth=5, fg="Blue", font=("Courier", 13))
  274.  
  275.             listviewtittle.grid(row=0, column=1, columnspan=1)
  276.             buttongoback.grid(row=3, column=1, columnspan=3, sticky="NSEW")
  277.             whattodo.grid(row=1, column=1, columnspan=3)
  278.  
  279.     def makeanewlist():
  280.         filestart = open("word_list.txt", "w")
  281.         filestart.write("")
  282.         filestart.close()
  283.         delete = Label(root, text="Deleted your word list", width=35, borderwidth=5, fg="Red", font=("Courier", 30))
  284.         delete.grid(row=0, column=0, columnspan=2)
  285.         buttongoback = Button(root, text="Go back", pady=50, padx=100, borderwidth=5,
  286.                               command=lambda: [destroy1(), total()])
  287.         buttongoback.grid(row=1, column=0, columnspan=2, sticky="NSEW")
  288.  
  289.     def addword1():
  290.         words1 = ""
  291.         words1 = Entry(root, width=40, font=("Courier", 13))
  292.         words1.grid(row=2, column=1, columnspan=2)
  293.         whattodoaddword = Label(root, text="What word would you like to add?", width=35, borderwidth=5, fg="Red",
  294.                                 font=("Courier", 15))
  295.         whattodoaddword.grid(row=0, column=1, columnspan=2)
  296.  
  297.         def myClick(event=None):
  298.             words12 = words1.get()
  299.             words = words12
  300.             number_found = False
  301.             for index in words:
  302.                 if index.isnumeric() is True:
  303.                     number_found = True
  304.             if number_found is True:
  305.                 isnumericano = Label(root, text="That is a number!", width=35, borderwidth=5, fg="#FF017B",
  306.                                      font=("Courier", 14))
  307.                 isnumericano.grid(row=1, column=1, columnspan=2)
  308.                 words1.destroy()
  309.                 myButton.destroy()
  310.                 addword1()
  311.  
  312.             elif " " in words:
  313.                 isnumericano = Label(root, text="You didn't type anything!", width=35, borderwidth=5, fg="#FF017B",
  314.                                      font=("Courier", 14))
  315.                 isnumericano.grid(row=1, column=1, columnspan=2)
  316.                 words1.destroy()
  317.                 destroy1()
  318.                 addword1()
  319.  
  320.             elif words == "":
  321.                 isnumericano = Label(root, text="You didn't type anything!", width=35, borderwidth=5, fg="#FF017B",
  322.                                      font=("Courier", 14))
  323.                 isnumericano.grid(row=1, column=1, columnspan=2)
  324.                 words1.destroy()
  325.                 myButton.destroy()
  326.                 addword1()
  327.  
  328.             else:
  329.                 fileappend = open("word_list.txt", "a")
  330.                 fileappend.write(", " + words)
  331.                 fileappend.close()
  332.                 isnumericano = Label(root, text="Added " + words + " to your word list!", width=35, borderwidth=5,
  333.                                      fg="#FF017B", font=("Courier", 14))
  334.                 isnumericano.grid(row=1, column=1, columnspan=2)
  335.                 words1.destroy()
  336.                 myButton.destroy()
  337.                 addword1()
  338.  
  339.         myButton = Button(root, text="Add your word", pady=10, padx=75, borderwidth=5,
  340.                           command=lambda: myClick(event=None))
  341.         myButton.grid(row=3, column=1, columnspan=1, sticky="NSEW")
  342.         myButton = Button(root, text="Go back", pady=10, padx=75, borderwidth=5,
  343.                           command=lambda: [destroy1(), total()])
  344.         myButton.grid(row=3, column=2, columnspan=1, sticky="NSEW")
  345.         root.bind('<Return>', myClick)
  346.  
  347.     def addwords():
  348.         if words_tulip == ['']:
  349.             filestart = open("word_list.txt", "w")
  350.             filestart.write("timnoot")
  351.             filestart.close()
  352.             addword1()
  353.         addword1()
  354.  
  355.     def triesset():
  356.  
  357.         label = Label(root, text="Set the amount of tries", width=35, borderwidth=5, fg="Red", font=("Courier", 15))
  358.         label.grid(row=0, column=0, columnspan=2)
  359.         words1 = Entry(root, width=40, font=("Courier", 13))
  360.         words1.grid(row=1, column=0, columnspan=2, sticky="NSEW")
  361.         submit = Button(root, text="Submit", pady=10, padx=50, borderwidth=5,
  362.                         command=lambda: [myClick()])
  363.         submit.grid(row=2, column=1, columnspan=1, sticky="NSEW")
  364.         buttongoback = Button(root, text="Go back", pady=10, padx=55, borderwidth=5,
  365.                               command=lambda: [destroy1(), Welcome()])
  366.         buttongoback.grid(row=2, column=0, columnspan=1, sticky="NSEW")
  367.  
  368.         def myClick(event=None):
  369.             words12 = words1.get()
  370.             score.tries = int(words12)
  371.             destroy1()
  372.             label = Label(root, text="Set tries amount to " + str(score.tries), width=35, borderwidth=5, fg="Red",
  373.                           font=("Courier", 20))
  374.             label.grid(row=0, column=0, columnspan=2)
  375.             buttongoback = Button(root, text="Go back", pady=25, padx=50, borderwidth=5,
  376.                                   command=lambda: [destroy1(), Welcome()])
  377.             buttongoback.grid(row=1, column=0, columnspan=2, sticky="NSEW")
  378.  
  379.         root.bind('<Return>', myClick)
  380.  
  381.     def buttonchange_word_list():
  382.         whattodo = Label(root, text="What would you like to do next?", width=35, borderwidth=5, fg="Red",
  383.                          font=("Courier", 15))
  384.         buttonviewlist = Button(root, text="View currenst list", pady=100, padx=100, borderwidth=5,
  385.                                 command=lambda: [destroy1(), viewlist()])
  386.         buttonmakenewlist = Button(root, text="Delete current list", pady=100, padx=100, borderwidth=5,
  387.                                    command=lambda: [destroy1(), makeanewlist()])
  388.         buttonaddword = Button(root, text="Add a word to the current list", pady=100, padx=100, borderwidth=5,
  389.                                command=lambda: [destroy1(), addwords()])
  390.         buttongoback = Button(root, text="Go back", pady=35, padx=350, borderwidth=5,
  391.                               command=lambda: [destroy1(), Welcome()])
  392.         settries = Button(root, text="Set tries", pady=100, padx=150, borderwidth=5,
  393.                               command=lambda: [destroy1(), triesset()])
  394.  
  395.         buttonviewlist.grid(row=1, column=1, columnspan=1, sticky="NSEW")
  396.         buttonmakenewlist.grid(row=1, column=2, columnspan=1, sticky="NSEW")
  397.         buttonaddword.grid(row=2, column=1, columnspan=1, sticky="NSEW")
  398.         buttongoback.grid(row=3, column=1, columnspan=2)
  399.         whattodo.grid(row=0, column=1, columnspan=2)
  400.         settries.grid(row=2, column=2, columnspan=1, sticky="NSEW")
  401.  
  402.     root.mainloop()
  403.  
  404.  
  405. total()
  406.  
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×