Advertisement
calfred2808

#Python Guess the number

Jul 18th, 2020
1,222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.53 KB | None | 0 0
  1. import random
  2. from tkinter import Tk, Label, Button, Entry, StringVar, DISABLED, NORMAL, END, W, E
  3.  
  4. class GuessingGame:
  5.     def __init__(self, master):
  6.         self.master = master
  7.         master.title("Guessing Game")
  8.  
  9.         self.secret_number = random.randint(1, 100)
  10.         self.guess = None
  11.         self.num_guesses = 0
  12.  
  13.         self.message = "Guess a number from 1 to 100"
  14.         self.label_text = StringVar()
  15.         self.label_text.set(self.message)
  16.         self.label = Label(master, textvariable=self.label_text)
  17.  
  18.         vcmd = master.register(self.validate) # we have to wrap the command
  19.         self.entry = Entry(master, validate="key", validatecommand=(vcmd, '%P'))
  20.  
  21.         self.guess_button = Button(master, text="Guess", command=self.guess_number)
  22.         self.reset_button = Button(master, text="Play again", command=self.reset, state=DISABLED)
  23.  
  24.         self.label.grid(row=0, column=0, columnspan=2, sticky=W+E)
  25.         self.entry.grid(row=1, column=0, columnspan=2, sticky=W+E)
  26.         self.guess_button.grid(row=2, column=0)
  27.         self.reset_button.grid(row=2, column=1)
  28.  
  29.     def validate(self, new_text):
  30.         if not new_text: # the field is being cleared
  31.             self.guess = None
  32.             return True
  33.  
  34.         try:
  35.             guess = int(new_text)
  36.             if 1 <= guess <= 100:
  37.                 self.guess = guess
  38.                 return True
  39.             else:
  40.                 return False
  41.         except ValueError:
  42.             return False
  43.  
  44.     def guess_number(self):
  45.         self.num_guesses += 1
  46.  
  47.         if self.guess is None:
  48.             self.message = "Guess a number from 1 to 100"
  49.  
  50.         elif self.guess == self.secret_number:
  51.             suffix = '' if self.num_guesses == 1 else 'es'
  52.             self.message = "Congratulations! You guessed the number after %d guess%s." % (self.num_guesses, suffix)
  53.             self.guess_button.configure(state=DISABLED)
  54.             self.reset_button.configure(state=NORMAL)
  55.  
  56.         elif self.guess < self.secret_number:
  57.             self.message = "Too low! Guess again!"
  58.         else:
  59.             self.message = "Too high! Guess again!"
  60.  
  61.         self.label_text.set(self.message)
  62.  
  63.     def reset(self):
  64.         self.entry.delete(0, END)
  65.         self.secret_number = random.randint(1, 100)
  66.         self.guess = 0
  67.         self.num_guesses = 0
  68.  
  69.         self.message = "Guess a number from 1 to 100"
  70.         self.label_text.set(self.message)
  71.  
  72.         self.guess_button.configure(state=NORMAL)
  73.         self.reset_button.configure(state=DISABLED)
  74.  
  75. root = Tk()
  76. my_gui = GuessingGame(root)
  77. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement