cid0rz

Hangman tkinter

Nov 10th, 2022 (edited)
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.71 KB | Software | 0 0
  1. import random
  2. import tkinter as tk
  3. from tkinter import messagebox as msg
  4.  
  5.  
  6. three_worded_list = (
  7.     "cat",
  8.     "rat",
  9.     "ink",
  10.     "aid",
  11. )
  12.  
  13. four_worded_list = (
  14.     "java",
  15.     "will",
  16. )
  17.  
  18. five_worded_list = (
  19.     "Brick",
  20.     "Prick",
  21. )
  22.  
  23.  
  24. six_worded_list = (
  25.     "Babies",
  26.     "Cactus",
  27. )
  28.  
  29. seven_worded_list = (
  30.     "Abdomen",
  31.     "Baboons",
  32. )
  33.  
  34. eight_worded_list = (
  35.     "Intellij",
  36.     "Aardvark",
  37. )
  38.  
  39. letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
  40.            'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
  41. hang_font=("Arial", 20)
  42.  
  43. class Hangman(tk.Tk):
  44.  
  45.     def __init__(self):
  46.         self.welcome_options()
  47.         self.user_dif = None
  48.         while self.user_dif not in ["1", "2", "3"]:
  49.             self.user_dif = input("\nChoose difficulty by number input (press 0 to exit): ")
  50.             if self.user_dif == "1":
  51.                 self.wordList = three_worded_list + four_worded_list
  52.                 self.max_life = 10
  53.             elif self.user_dif == "2":
  54.                 self.wordList = five_worded_list + six_worded_list
  55.                 self.max_life = 6
  56.             elif self.user_dif == "3":
  57.                 self.wordList = seven_worded_list + eight_worded_list
  58.                 self.max_life = 3
  59.             elif self.user_dif == "0":
  60.                 print("exiting...")
  61.                 return
  62.             else:
  63.                 print("\nThat is not a valid difficulty")
  64.         super().__init__()
  65.         self.draw_keyboard()
  66.         self.setup_game()
  67.         self.revealed_label = tk.Label(self, text = f"word : {self.revealed_letters}", font=hang_font)
  68.         self.revealed_label.pack()
  69.         self.lives_label = tk.Label(self, text = f" remaining tries: {self.life}", font=hang_font)
  70.         self.lives_label.pack()
  71.  
  72.  
  73.  
  74.     def setup_game(self):
  75.         self.word = random.choice(self.wordList)
  76.         self.word = self.word.lower()
  77.         self.letters_in_word = [*self.word]
  78.         self.revealed_letters = [*(len(self.word)*'_')]
  79.         self.guessed_letters = []
  80.         self.life = self.max_life
  81.  
  82.     def welcome_options(self):
  83.         print("\nWelcome to Hangman\n")
  84.         print("1. " + "Noobie (10 lives)")
  85.         print("2. " + "Intermediate (6 lives)")
  86.         print("3. " + "Expert (3 lives)")
  87.        
  88.  
  89.     def draw_keyboard(self):
  90.         self.keyboard = tk.Toplevel()
  91.         self.keyboard.geometry('800x200')
  92.         n = 0
  93.         for letter in letters:
  94.             tk.Button(self.keyboard, text=letter, command=lambda guess=letter: self.check(guess),
  95.                    font=('Helvetica 18'), width=4).grid(row=1+n//9, column=n % 9)
  96.             n += 1
  97.        
  98.     def check(self, guess):
  99.         if guess in self.letters_in_word:
  100.             for index, char in enumerate(self.letters_in_word):
  101.                 if guess == char:
  102.                     self.revealed_letters.insert(index,char)
  103.                     self.revealed_letters.pop(index+1)
  104.  
  105.         else:
  106.             self.life -= 1
  107.             self.guessed_letters.append(guess)
  108.             print("You guessed wrong")
  109.             print(self.guessed_letters)
  110.         if self.life < 1:
  111.             msg.showerror(title= ":(", message=f"You have lost the game, the word was {self.word}")
  112.             self.setup_game()
  113.            
  114.         if self.letters_in_word == self.revealed_letters:
  115.             msg.showinfo(title="congratulations", message="you have won")
  116.             print(f'revealed letters: {self.revealed_letters}')
  117.             self.setup_game()
  118.         self.revealed_label.configure(text =  f"word : {self.revealed_letters}")
  119.         self.lives_label.configure(text= f" remaining tries: {self.life}")
  120.  
  121.  
  122.  
  123. h = Hangman()
  124. h.mainloop()
Add Comment
Please, Sign In to add comment