Advertisement
onager

Untitled

Apr 24th, 2016
4,069
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.72 KB | None | 0 0
  1. from tkinter import Tk, Frame, Label, IntVar
  2. from tkinter.ttk import Button
  3. from functools import partial
  4. from random import randint
  5.  
  6.     # Onager Ornery Clicker v0.9
  7.     # 2016 Mickey Kocic
  8.     # Released for testing and review only. All rights reserved.
  9.  
  10. class Game:
  11.  
  12.     def __init__(self):
  13.         self.window = Tk()
  14.         self.window.title("Onager Ornery Clicker")
  15.         self.createwidgets()
  16.  
  17.     def createframes(self):
  18.         self.frame1 = Frame(self.window)
  19.         self.frame2 = Frame(self.window)
  20.         self.frame1.configure(bg='silver',
  21.                               relief='raised', border='15')
  22.         self.frame2.configure(bg='silver',
  23.                               relief='raised', border='15')
  24.         self.frame1.rowconfigure(6)
  25.         self.frame1.columnconfigure(5)
  26.         self.frame2.rowconfigure(15)
  27.         self.frame2.columnconfigure(5)
  28.         self.frame1.grid(row=0, column=0, rowspan=6,
  29.                          columnspan=5)
  30.         self.frame2.grid(row=6, column=0, rowspan=15,
  31.                          columnspan=5)
  32.  
  33.     def createtitle(self):
  34.         self.title = Label(self.frame1)
  35.         self.title.configure(bg='silver', fg='SlateBlue4',
  36.                              font='serif 30', justify='center',
  37.                              padx='10', pady='10',
  38.                              text='Onager Ornery Clicker')
  39.         self.title.grid(row=0, column=0, rowspan=1,
  40.                         columnspan=5)
  41.  
  42.     def createinstr(self):
  43.         text1 = "Clicking on 'Click Me!' scores a point.\n"
  44.         text2 = "Clicking on 'Don't Click Me!' costs a point.\n"
  45.         text3 = "'Start' button starts timer, 'Stop' stops/clears it.\n"
  46.         text4 = 'See how quickly you can get the high score\n'
  47.         text5 = 'or how high a score you get in a set time.'
  48.         textstr = text1 + text2 + text3 + text4 + text5
  49.  
  50.         self.instr = Label(self.frame1)
  51.         self.instr.configure(bg='Silver', fg='SlateBlue4',
  52.                              font='serif 12', justify='center',
  53.                              text=textstr, pady='10',
  54.                              padx='17')
  55.         self.instr.grid(row=1, column=0, rowspan=5,
  56.                         columnspan=1)
  57.  
  58.     def createstart(self):
  59.         self.start = Button(self.frame1)
  60.         self.start['text'] = 'Start'
  61.         self.start['command'] = partial(self.start_game)
  62.         self.start.grid(row=1, column=2, rowspan=1,
  63.                         columnspan=1)
  64.  
  65.     def createstop(self):
  66.         self.stop = Button(self.frame1)
  67.         self.stop['text'] = 'Stop.'
  68.         self.stop['command'] = partial(self.stop_game)
  69.         self.stop.grid(row=1, column=3, rowspan=1,
  70.                        columnspan=1)
  71.  
  72.     def createscore(self):
  73.         self.score_label = Label(self.frame1)
  74.         self.score_label.configure(fg='black',
  75.                                    font='serif 10')
  76.         self.score_label['text'] = 'Score:'
  77.         self.score_label.grid(row=3, column=2, rowspan=1,
  78.                               columnspan=1)
  79.         self.score = Label(self.frame1)
  80.         self.score.configure(bg='black', fg='white',
  81.                              font='serif 16')
  82.         self.score.grid(row=5, column=2, rowspan=1,
  83.                         columnspan=1)
  84.  
  85.     def createtime(self):
  86.         self.time_label = Label(self.frame1)
  87.         self.time_label.configure(fg='black',
  88.                                   font='serif 10')
  89.         self.time_label['text'] = 'Time:'
  90.         self.time_label.grid(row=3, column=3, rowspan=1,
  91.                              columnspan=1)
  92.         self.time = Label(self.frame1)
  93.         self.time.configure(bg='black', fg='white',
  94.                             font='seriv 16')
  95.         self.time.grid(row=5, column=3, rowspan=1,
  96.                         columnspan=1)
  97.  
  98.     def createbuttons(self):
  99.         self.buttons = []
  100.         for item in range(75):
  101.             button = Button(self.frame2,
  102.                                  width=len("Don't Click Me!"))
  103.             rownum, colnum = divmod(item, 5)
  104.             button.grid(row=rownum, column=colnum,
  105.                         rowspan=1, columnspan=1)
  106.             button['command'] = partial(self.clicked, button)
  107.             self.buttons.append(button)
  108.         self.shuffle()
  109.  
  110.     def createwidgets(self):
  111.         self.createframes()
  112.         self.createtitle()
  113.         self.createinstr()
  114.         self.createstart()
  115.         self.createstop()
  116.         self.createscore()
  117.         self.createtime()
  118.         self.createbuttons()
  119.  
  120.  
  121. class Play(Game):
  122.  
  123.     def __init__(self):
  124.         Game.__init__(self)
  125.         self.scorevar = IntVar()
  126.         self.timevar = IntVar()
  127.         self.score['textvariable'] = str(self.scorevar)
  128.         self.time['textvariable'] = str(self.timevar)
  129.  
  130.     def clicked(self, button):
  131.         if button['text'] == 'Click Me!':
  132.             self.scorevar.set(self.scorevar.get() + 1)
  133.         else:
  134.             self.scorevar.set(self.scorevar.get() - 1)
  135.         self.shuffle()
  136.  
  137.     def shuffle(self):
  138.         for i, button in enumerate(self.buttons, 1):
  139.             button['text'] = "Don't Click Me!!"
  140.         index = randint(0, len(self.buttons))
  141.         self.buttons[index]['text'] = 'Click Me!'
  142.  
  143.     def start_game(self):
  144.         self.game_running = True
  145.         self.update_time()
  146.  
  147.     def stop_game(self):
  148.         if self.game_running == False:
  149.             self.timevar.set(0)
  150.             self.scorevar.set(0)
  151.         self.game_running = False
  152.  
  153.     def update_time(self):
  154.         if self.game_running:
  155.             self.timevar.set(self.timevar.get() + 1)
  156.             self.window.after(1000, self.update_time)
  157.  
  158.  
  159. def main():
  160.     onager = Play()
  161.     onager.window.mainloop()
  162.  
  163. if __name__=='__main__':
  164.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement