2017-05-19 12 views
-1
from Tkinter import* 
from tkMessageBox import* 
import random 
import time 

n = 1 
a = 1 

class GameFrame(Frame): 

    def __init__(self): 
     global a 
     global n 
     Frame.__init__(self) 
     self.master.title("Be a Billionaire") 
     self.master.geometry("1200x700") 
     self.master.resizable(0,0) 
     self.grid() 

     self._mission = Label(self, text = "Your Mission is to Earn 1,000,000,000$" ,font = ("Arial", 30, "bold")) 
     self._mission.grid() 

     counter1 = IntVar() 
     counter1.set(0) 

     self._currentmoney = Label(self, text = "Your Current Money:" ,font = ("Arial", 30, "bold")) 
     self._currentmoney.grid() 

     self._currentmoney = Label(self, textvariable = counter1 ,font = ("Arial", 30, "bold")) 
     self._currentmoney.grid() 

     ###########################################################Click########################################################### 
     self._moneyearn = Button(self, text = "Click Me to Earn Money", font = ("Arial", 30, "bold"), command = lambda: increasemoney(a)) 
     self._moneyearn.grid() 

     self._clickupgrade1 = Button(self, text = "Click Me to Upgrade Click", font = ("Arial", 15, "bold"), command = lambda: upgradeclick()) 
     self._clickupgrade1.grid() 

     self._costlabel1 = Label(self, text = "Cost:", font = ("Arial", 15, "bold")) 
     self._costlabel1.grid() 

     counter2 = IntVar() 
     counter2.set(2) 
     self._neededmoney1 = Label(self, textvariable = counter2, font = ("Arial", 15, "bold")) 
     self._neededmoney1.grid() 

     def increasemoney(x): 
      counter1.set(counter1.get() + x) 

     def upgradeclick(): 
      global a 
      global n 
      if counter1.get() >= n*(n+1)*(n+2): 
       a += 5*n 
       counter1.set(counter1.get() - n*(n+1)*(n+3)) 
       counter2.set((n+1)*(n+2)*(n+3)) 
       n += 1    
      else: 
       showwarning(message = "You Don't Have Enough Money!", parent = self)   
     ########################################################################################################################### 

     ##########################################################Lottery########################################################## 
     self._lotterytitle = Label(self, text = "LOTTERY! : You can win 0$ ~ 100*(money you put in)", font = ("Arial", 15, "bold")) 
     self._lotterytitle.grid() 

     self._lotterymoney = IntVar() 
     self._lotteryentry = Entry(self, textvariable = self._lotterymoney, font = ("Arial", 15, "bold")) 
     self._lotteryentry.grid() 

     self._lotterybutton = Button(self, text = "See the results", font = ("Arial", 15, "bold"), command = lambda: lottery()) 
     self._lotterybutton.grid() 

     def lottery(): 
      x = self._lotterymoney.get() 
      if x <= counter1.get(): 
       l = random.randint(1, 100) 
       if 100 >= l > 99: 
        counter1.set(counter1.get() + x*99) 
        showinfo(message = "Congratulations! You've won First Prize(100*(Money you have put in))", parent = self) 
       elif 99 >= l > 94: 
        counter1.set(counter1.get() + x*29) 
        showinfo(message = "Congratulations! You've won Second Prize(20*(Money you have put in))", parent = self) 
       elif 94 >= l > 80: 
        counter1.set(counter1.get() + x*9) 
        showinfo(message = "Congratulations! You've won Third Prize(10*(Money you have put in))", parent = self) 
       else: 
        counter1.set(counter1.get() - x) 
        showinfo(message = "Sorry! You've Lost", parent = self) 
      else: 
       showwarning(message = "You Don't Have Enough Money!", parent = self) 
     ########################################################################################################################### 

     ########################################Additional Income(Earns Money Every Second)######################################## 
     self._additionaltitle = Label(self, text = "Additional Income(Earns Money Every Second)", font = ("Arial", 15, "bold")) 
     self._additionaltitle.grid() 




def main(): 
    GameFrame().mainloop() 

main() 

Am zusätzlichen Einkommen Teil, würde Ich mag eine Art von Wert m zu counter1 hinzufügen, aber ich weiß nicht, wie es zu tun.Wie mache ich meine Funktion, jede Sekunde in Python zu laufen?

+0

Sie haben eine Funktion 'increasemoney' bekam die diese genau zu tun scheint. Warum kannst du es nicht benutzen? – mkrieger1

+3

Sie müssen nicht wirklich den ganzen Code posten, um * zu fragen, wie Sie eine Funktion einmal pro Sekunde ausführen *. Die Antwort zu letzterem wäre mit 'sleep (1)' aus dem 'time'-Modul importiert –

+1

@ Ev.Kounis Es ist generell _nicht_ eine gute Idee,' time.sleep' in einer ereignisgesteuerten GUI-Schleife zu nennen, weil das einfriert die Schleife. Solche GUI-Frameworks bieten also andere Möglichkeiten, um Verzögerungen anzufordern; Der übliche Weg in Tkinter besteht darin, die '.after'-Methode eines Widgets aufzurufen, wie in der Antwort des rechten Beins dargestellt. –

Antwort

2

Um eine Funktion in einer tkinter App jede Sekunde auszuführen, verwenden Sie after.

nach (delay_ms, Rückruf = None, * args)

Register einen Alarm Rückruf, der nach einer gegebenen Zeit aufgerufen wird.

Diese Methode sollte am Ende der Funktion aufgerufen werden, die periodisch aufgerufen werden soll. Zum Beispiel vorstellen, eine MyWidget Klasse, deren möchte ich jede Sekunde die foo Methode auszuführen:

class MyWidget(tk.Widget): 
    def foo(self): 
     print("foo") 
     self.after(1000, self.foo) 
+0

@ PM2Ring Du hast Recht, ich habe es bearbeitet :) –

+0

Das ist besser! Schade, ich kann Ihnen keine weitere Aufwertung geben. ;) Ich habe nach einer guten kanonischen Frage gesucht, um sie als Täuschungsziel für diesen zu verwenden, aber ich habe nicht viel Glück. –

+0

@ PM2Ring Nun, http://stackoverflow.com/questions/25753632/tkinter-how-to-use-after-method sagt sicher alles, ist aber nicht ganz kanonisch. Ich würde einen machen, aber ich würde wahrscheinlich als Dupe markiert werden ^^ Werde es aber versuchen, da es so aussieht als könnte es nützlich sein. –

Verwandte Themen