[Précédente] Table Des Matières [Suivante]

Utiliser l'API Simple DirectMedia Layer

Timers

  • Récupérer le temps actuel en millisecondes

SDL_GetTicks() cous renseigne sur le nombre de millisecondes écoulés depuis un point arbitraire du passé.

Astuce:
En général, quand vous implémenter un jeu, il vaut mieux bouger des objets par rapport à un temps plutôt qu'à un framerate. Le jeu est ainsi plus logique sur des systèmes rapide ou lent.
Exemple:
#define TICK_INTERVAL    30

Uint32 TimeLeft(void)
{
    static Uint32 next_time = 0;
    Uint32 now;

    now = SDL_GetTicks();
    if ( next_time <= now ) {
        next_time = now+TICK_INTERVAL;
        return(0);
    }
    return(next_time-now);
}
  • Attendre une durée en millsecondes

SDL_Delay() vous permet d'attendre un nombre de millisecondes.

Du fait que les systèmes supportant SDL sont multitâches, il n'existe aucun moyen d'assurer que votre application va attendre le temps requis. Cette fonction sert plus à attendre un moment plutôt que marquer un évènement à un temps précis.

Astuce:
Most operating systems have a scheduler timeslice of about 10 ms. You can use SDL_Delay(1) as a way of giving up CPU for the current timeslice, allowing other threads to run. This is important if you have a thread in a tight loop but want other threads (like audio) to keep running.
Exemple:
{
    while ( game_running ) {
        UpdateGameState();
        SDL_Delay(TimeLeft());
    }
}
 

[Précédente] Table Des Matières [Suivante]