Seite 1 von 1

Automatisches hinzufügen

Verfasst: Donnerstag 8. Dezember 2016, 14:30
von Vipaah
Hey,
Momentan möchte ich eine Art "CookieClicker" mit tkinter erstellen. Ich habe es momentan so, dass wenn du dir ein Upgrade kaufst, dass du pro Click mehr Cookies bekommst. Jedoch möchte ich das so machen, dass man automatisches jede Sekunde z.b 3 Cookies bekommt. Wie geht das? (Mit tkinter)


Dankeschön

Code: Alles auswählen

def Upgrade1(event):
    global Cookies
    global Cookieplus
    if Cookies < 20:
        return Cookies1
    if Cookies > 20:
        l['text'] = "Cookies Pro click " + str(Cookieplus)
        b['text'] = str(Cookieplus) + " + Cookies"
        Cookies = Cookies - 20
        Cookieplus = Cookiesplus + 1
        return Cookies
(Momentan die Definition für das mehr pro Klicken)

Re: Automatisches hinzufügen

Verfasst: Donnerstag 8. Dezember 2016, 15:22
von BlackJack
@Vipaah: Zeitverzögertes ausführen in der Tk-Hauptschleife kann man mit der `after()`-Methode auf Widget-Objekten erreichen.

Die Anmerkungen zu ``global`` und OOP aus dem anderen Thema von Dir waren allgemeingültig, greifen also auch hier. Globaler Zustand ist unübersichtlich und fehleranfällig und macht einem das Programmieren unnötig schwer. Bei GUIs braucht man sowieso OOP, und damit gibt's dann auch keine Ausrede mehr für ``global``.

Gute, passende Namen sind wichtig beim Programmieren. Man sollte sich an die Konventionen bei der Schreibweise halten, und keine kryptischen Abkürzungen oder Nummernanhängsel verwenden.

Re: Automatisches hinzufügen

Verfasst: Donnerstag 8. Dezember 2016, 15:29
von Vipaah
Ich bin leider noch ein Anfänger und habe kaum verstanden was du meintest. Ich hab es einfach mal einfach so gemacht.

Re: Automatisches hinzufügen

Verfasst: Donnerstag 8. Dezember 2016, 15:40
von BlackJack
@Vipaah: GUI ist vielleicht nicht gerade der beste Startpunkt für Anfänger. Das setzt objektorientierte Programmierung (OOP) voraus. Und bring als neues ereignisbasierte Programmierung mit sich, also zum Beispiel genau das was Du gerade erreichen willst, das nach x Sekunden ein Ereignis auftritt und etwas passiert. OOP setzt Funktionen voraus. Also ”echte” Funktionen wo nicht auf Werte von ausserhalb (ausser Konstanten) einfach so zugegriffen wird, und auch nicht irgendwelche Werte ausserhalb verändert werden. Also kein ``global``. Das Schlüsselwort solltest Du am besten gleich wieder vergessen. Das macht mehr Probleme als es löst. Werte betreten Funktionen (und Methoden) als Argumente und verlassen sie als Rückgabewert.

Vor Funktionen sind die Kontrollstrukturen um den Programmfluss zu beeinflussen, also bedingte Ausführung und Schleifen.