From 40f56e80c7f755195b3714bf4eaa3de6def75327 Mon Sep 17 00:00:00 2001 From: Aubert Date: Fri, 1 Dec 2023 15:55:06 +0100 Subject: [PATCH] Timer avec time.h --- main.c | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/main.c b/main.c index 3199175..e73cf7f 100644 --- a/main.c +++ b/main.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #define CYCLE 10000L @@ -109,15 +109,17 @@ void deplacerSerpent(int longueurSerpent, Segment serpent[], int direction){ unsigned long Microsecondes() { - /* Code pour obtenir le temps en microsecondes*/ - /* Remplacez cela par la logique réelle de votre application*/ - return 0; /* Remplacez 0 par la valeur correcte*/ + return 0; } -/* Fonction pour convertir les microsecondes en minutes:secondes*/ void ConvertirMicrosecondes(unsigned long microsecondes, int *minutes, int *secondes) { - *minutes = microsecondes / 60000000; /* 1 minute = 60 * 1 000 000 microsecondes*/ - *secondes = (microsecondes % 60000000) / 1000000; /* 1 seconde = 1 000 000 microsecondes*/ + *minutes = microsecondes / 60000000; + *secondes = (microsecondes % 60000000) / 1000000; +} + +void AttendreMicrosecondes(unsigned long microsecondes) { + clock_t debut = clock(); + while ((clock() - debut) * 1000000 / CLOCKS_PER_SEC < microsecondes); } @@ -140,34 +142,25 @@ int main() { afficherPastilleAleatoire(5); afficherSerpent(serpent, longueurSerpent); - - const unsigned long CYCLE = 1000000L; /* Intervalle en microsecondes (1 seconde)*/ + const unsigned long CYCLE = 1000000L; - /* Marquer le début du premier cycle*/ unsigned long suivant = Microsecondes() + CYCLE; - while (1) { /* Boucle principale du programme*/ + while (1) { if (Microsecondes() > suivant) { - /* Une période s'est écoulée, effectuez la tâche nécessaire*/ - /* (par exemple, mettre à jour le dessin)*/ - - /* Convertir les microsecondes en minutes:secondes*/ + int minutes, secondes; ConvertirMicrosecondes(Microsecondes(), &minutes, &secondes); - /* Afficher le temps*/ printf("Temps écoulé : %02d:%02d\n", minutes, secondes); - /* Mettre à jour la prochaine date*/ suivant = Microsecondes() + CYCLE; } - /* Ajoutez d'autres traitements de la boucle principale ici*/ - - /* Pause pour ne pas surcharger le processeur*/ - usleep(1000); /* Attendez 1000 microsecondes (1 milliseconde)*/ + + AttendreMicrosecondes(1000); } - + while(1){ int touche;