Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import tkinter as tk
- from tkinter import messagebox as msg
- three_worded_list = (
- "cat",
- "rat",
- "ink",
- "aid",
- )
- four_worded_list = (
- "java",
- "will",
- )
- five_worded_list = (
- "Brick",
- "Prick",
- )
- six_worded_list = (
- "Babies",
- "Cactus",
- )
- seven_worded_list = (
- "Abdomen",
- "Baboons",
- )
- eight_worded_list = (
- "Intellij",
- "Aardvark",
- )
- letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
- 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
- hang_font=("Arial", 20)
- class Hangman(tk.Tk):
- def __init__(self):
- self.welcome_options()
- self.user_dif = None
- while self.user_dif not in ["1", "2", "3"]:
- self.user_dif = input("\nChoose difficulty by number input (press 0 to exit): ")
- if self.user_dif == "1":
- self.wordList = three_worded_list + four_worded_list
- self.max_life = 10
- elif self.user_dif == "2":
- self.wordList = five_worded_list + six_worded_list
- self.max_life = 6
- elif self.user_dif == "3":
- self.wordList = seven_worded_list + eight_worded_list
- self.max_life = 3
- elif self.user_dif == "0":
- print("exiting...")
- return
- else:
- print("\nThat is not a valid difficulty")
- super().__init__()
- self.draw_keyboard()
- self.setup_game()
- self.revealed_label = tk.Label(self, text = f"word : {self.revealed_letters}", font=hang_font)
- self.revealed_label.pack()
- self.lives_label = tk.Label(self, text = f" remaining tries: {self.life}", font=hang_font)
- self.lives_label.pack()
- def setup_game(self):
- self.word = random.choice(self.wordList)
- self.word = self.word.lower()
- self.letters_in_word = [*self.word]
- self.revealed_letters = [*(len(self.word)*'_')]
- self.guessed_letters = []
- self.life = self.max_life
- def welcome_options(self):
- print("\nWelcome to Hangman\n")
- print("1. " + "Noobie (10 lives)")
- print("2. " + "Intermediate (6 lives)")
- print("3. " + "Expert (3 lives)")
- def draw_keyboard(self):
- self.keyboard = tk.Toplevel()
- self.keyboard.geometry('800x200')
- n = 0
- for letter in letters:
- tk.Button(self.keyboard, text=letter, command=lambda guess=letter: self.check(guess),
- font=('Helvetica 18'), width=4).grid(row=1+n//9, column=n % 9)
- n += 1
- def check(self, guess):
- if guess in self.letters_in_word:
- for index, char in enumerate(self.letters_in_word):
- if guess == char:
- self.revealed_letters.insert(index,char)
- self.revealed_letters.pop(index+1)
- else:
- self.life -= 1
- self.guessed_letters.append(guess)
- print("You guessed wrong")
- print(self.guessed_letters)
- if self.life < 1:
- msg.showerror(title= ":(", message=f"You have lost the game, the word was {self.word}")
- self.setup_game()
- if self.letters_in_word == self.revealed_letters:
- msg.showinfo(title="congratulations", message="you have won")
- print(f'revealed letters: {self.revealed_letters}')
- self.setup_game()
- self.revealed_label.configure(text = f"word : {self.revealed_letters}")
- self.lives_label.configure(text= f" remaining tries: {self.life}")
- h = Hangman()
- h.mainloop()
Add Comment
Please, Sign In to add comment