Chrono

Résolu
Signaler
Messages postés
9
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
10 mai 2011
-
Messages postés
9
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
10 mai 2011
-
Bonjour,

Je travail en ce moment sur un jeu.
Et je me suis dit que rajouter un chronomètre a celui ci.
Mais je n'y arrive pas du tout!
Si quelqu'un pourrait me dire comment faire.


Au faite j'entend par chronometre : "heure : minute : seconde"

Je travaille sous C::B en SDL.

Merci d'avance.

3 réponses

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
15
Salut,

Regarde cette doc.

Exemple :

#include <stdio.h>
#include <time.h>

int main()
{
  char lpBuffer[50];
  time_t nRawtime;
  struct tm* timeInfo;

  time(&nRawtime);
  timeInfo = localtime(&nRawtime);

  strftime(lpBuffer, 50, "%H : %M : %S", timeInfo);
  puts(lpBuffer);
  
  return 0;
}
Messages postés
9
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
10 mai 2011

Voilà j'ai resolu mon problème.


Je vais mettr mon sourceen ligne pour ce qui aurons le même problème que moi.

int main(int argc, char *argv[])
{
   SDL_Surface *ecran NULL, *texte NULL;
    SDL_Rect position;
   SDL_Event event;
   TTF_Font *police = NULL;
    SDL_Color couleurNoire {0, 0, 0}, couleurRouge {255, 0,0};
    int continuer = 1;
    int tempsActuel 0, tempsPrecedent 0, compteur = 0, heure = 0, minute = 0, seconde = 0, Millisecondes=0;
    char temps[20] = ""; /* Tableau de char suffisamment grand */
    clock_t start, end;
    double elapsed;


    SDL_Init(SDL_INIT_VIDEO);
    TTF_Init();

    ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
    SDL_WM_SetCaption("Gestion du texte avec SDL_ttf", NULL);


    /* Chargement de la police */
    police = TTF_OpenFont("angelina.ttf", 65);

    /* Initialisation du temps et du texte */
    tempsActuel = SDL_GetTicks();
    sprintf(temps, "Temps : %d : %d : %d ", heure, minute, seconde);
    texte = TTF_RenderText_Shaded(police, temps, couleurNoire, couleurRouge);

    while (continuer)
    {
        SDL_PollEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
                break;
        }

        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));


        tempsActuel = SDL_GetTicks();
        if (tempsActuel - tempsPrecedent >= 100) /* Si 100ms au moins se sont écoulées */
                {
            Millisecondes+=tempsActuel - tempsPrecedent;
            if(Millisecondes>=1000)
           {
                Millisecondes=Millisecondes%1000;
                seconde ++;
            }
            if(seconde >= 60)
            {
                minute ++;
                seconde=seconde%60;
            }
            if(minute >= 60)
            {
                heure ++;
                minute=minute%60;
            }

           sprintf(temps, "Temps : %d : %d : %d", heure, minute, seconde );
             /* On écrit dans la chaîne "temps" le nouveau temps */
           SDL_FreeSurface(texte); /* On supprime la surface précédente de la mémoire avant d'en charger une nouvelle (IMPORTANT) */
           texte = TTF_RenderText_Shaded(police, temps, couleurRouge, couleurNoire); /* On écrit la chaine temps dans la SDL_Surface */
            tempsPrecedent = tempsActuel; /* On met à jour le tempsPrecedent */
        }

        position.x = 180;
        position.y = 210;
        SDL_BlitSurface(texte, NULL, ecran, &position); /* Blit du textecontenant  le temps */
        SDL_Flip(ecran);

    }

    TTF_CloseFont(police);
    TTF_Quit();

    SDL_FreeSurface(texte);
    SDL_Quit();


    return EXIT_SUCCESS;
}


En èspérant que cela vous serve.
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
15
Ah heu... Pour une question C, merci de poster sur cppfrance dans un thème C.

[ Déplacé sur cppfrance.com ]