2016-10-29 1 views
0

Ich arbeite gerade an einem Projekt für die Hochschule und ich bin auf ein Problem gestoßen, das ich nicht zu beheben scheinen kann. Ich versuche, eine Abklingzeit für eine bestimmte Handlungsaktion in einer permanenten Schleife zu schaffen. Ich habe versucht, die Zeitfunktion zu verwenden, aber es funktioniert nicht.Wie mache ich einen Cooldown-Timer für eine Bedingung in C?

time_t timer1, timer2; 

    timer2 = time(NULL) -1; 

    while(1) 
    { 
     timer1 = time(NULL); 

     if(... && timer1 >= timer2 +1) 
     { 
     ... 
     timer2 = timer1; 
     } 
    } 
+1

Wie sollen wir wissen, was Punkte tun? Bitte veröffentlichen Sie das [minimale, vollständige und überprüfbare Beispiel] (http://stackoverflow.com/help/mcve), das das Problem zeigt. Und zu sagen "es funktioniert nicht" startet nur einen längeren Dialog: "Kompiliert es?" und "Was passiert, wenn Sie es ausführen, gibt es eine Willkommensnachricht oder Aufforderung?" und so weiter. Bitte sei präzise. –

+0

ist es ein Programm, das keine Probleme hat. Das geschieht, wenn Sie die Maustaste drücken, außer wenn ich den Timer hinzufüge. Wenn ich den Timer hinzufüge, passiert das überhaupt nicht – user2241851

Antwort

0

Bitte beachten Sie, dass unter Verwendung der time Funktion der Zeit Auflösung 1 Sekunde. Mit time bis Timeout bei 1 Sekunde kann der Zeitraum von 0.000xxx0001 Sekunden bis 1 Sekunde, je nachdem, wenn die Sekunden zählen rollt über.

Ich zeige die Verwendung von clock, die eine bessere Auflösung gibt, gibt es andere andere Zeitfunktionen zur Verfügung, wenn die Periode genauer sein muss (abhängig von der Granularität des Timers).

#include <time.h> 

void cooldown(int seconds) 
{ 
    clock_t start = clock(); 
    clock_t period = seconds * CLOCKS_PER_SEC; 
    clock_t elapsed; 

    do { 
     elapsed = clock() - start; 
    } while(elapsed < period); 
} 

int main() 
{ 
    cooldown(1); 
    return 0; 
} 

Offensichtlich müssen Sie Ihre Ereigniserkennung in der Schleife hinzufügen.

Verwandte Themen