2016-04-27 17 views
-1

Ich bin ziemlich neu in Python, und ich arbeite mit meinen Kollegen vom College auf einfache Puzzle-Projekt. Wir möchten das Programm aktualisieren und den Timer & Reset-Taste hinzufügen.Python - Countdown-Timer, der Programm nach gegebener Zeit

Die Idee des Timers ist, Countdown für X Minuten und dann zeigen einige Nachrichten mit quit/exit button oder einfach die Haupt-App zu beenden. Reset-Taste kann irgendwo im App-Fenster platziert werden und das Spiel zurücksetzen.

Programm finden Sie hier: http://pastebin.com/79zRqhnH

Vielen Dank für jede Hilfe.

A.

+0

Bitte geben Sie die relevanten Codeabschnitte innerhalb des Hauptteils ein. Bis zum Verlassen des Programms innerhalb eines Zeitrahmens, wenn Sie eine sich wiederholende Schleife haben, die häufig genug für Ihre Bedürfnisse Zyklen, können Sie einfach beenden, sobald eine Bedingung (wie "time.time()" weniger als ein Wert ist) ist kaputt. Wenn Sie eine Funktion beenden müssen, die möglicherweise keine Schleife hat, müssen Sie sich das Modul "Threading" in der integrierten Bibliothek ansehen. –

Antwort

0

nur ein paar Vorschläge erste, halten jedoch daran, ich bin auch kein Code-Experte.

Ich würde vorschlagen, dass Sie die Schildkröte importieren, und rufen Sie turtle.FUNCTIONNAME, wenn für die bestimmte Funktion, auch nur aus Gründen der Lesbarkeit später (obwohl ich bin mir ziemlich sicher, dass es auch besser in Bezug auf Speicher und Code Laufzeit, um nicht alle Funktionen auf einmal zu importieren, was passiert, wenn Sie FROM libraryname import * aufrufen).

können Sie auch Ihre Variablen in Ihrer MAIN Funktion und nicht global auf die Datei, für die Lesbarkeit und Organisation, und auch wenn Sie jemals die Funktionen in dieser Datei importieren möchten, dann globale Variablen nicht initialisiert in MAIN wird in die Quere kommen.

versuchen Sie auch, Ihren Code in Funktionen zu organisieren, in Ihrem aktuellen Beispiel sind die Turtle-Funktionen, die Sie aufgerufen haben, überall ohne Grund verstreut, wo Sie alle in eine neue Funktion eingewickelt und diese Funktion einmal aufrufen könnten stattdessen.

Stellen Sie sicher, dass Sie turtle.exitonclick() löschen, das Sie am Ende Ihres Programms haben.

import tkMessageBox 
import turtle 
def main() : 
    turtle.onscreenclick(getPos) 
    SetTimer() #call for the function to setup the timer, you can call this function when certain conditions are met rather than at startup. 
    mainloop() 

def SetTimer(): 
    canvas = turtle.getcanvas() #get current turtle canvas to set the after call on. 
    canvas.after(2000, CalledAfter2000ms, canvas) #first parameter specifies time in miliseconds to wait before the call to CalledAfter2000ms function which is in the second paramater, the third paramater here is the paramater im passing to the CalledAfter2000ms function. 

def CalledAfter2000ms(canvas): #function passed to canvas.after(...) 
    if tkMessageBox.askyesno("EXIT","Do you really want to exit?"): #if yes is pressed, True is returned, if no is pressed then False is returned. 
     turtle.bye() #exits the application