Outils pour utilisateurs

Outils du site


allegro:timers

====== Différences ====== Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

allegro:timers [2011/12/05 08:48]
mrhide [Timers]
allegro:timers [2012/06/29 17:01] (Version actuelle)
mrhide [Timers]
Ligne 1: Ligne 1:
-===== Timers =====+===== Allegro — Timers =====
  
 Dans cet article nous étudions les Timers, et comment les utiliser pour réguler notre boucle d'​affichage. Dans cet article nous étudions les Timers, et comment les utiliser pour réguler notre boucle d'​affichage.
  
-==== What Are Timers? ====+==== Que sont les Timers? ====
  
-Timers are event sources ​that will send regular timed events ​at a given interval.+Ce sont des sources ​d'events ​qui déclenche un event sur un intervalle de temps régulier.
  
-==== Why do I want Timers? ​====+==== Pourquoi en ai-je besoin ​====
  
-Timers can be used to regulate your main update loopso you only run at a given FPS, or they can be used to know when an animation ​needs to update, etc. +Ils peuvent être utilisés pour mettre à jour la boucle principale de votre jeuce qui vous permet de tourner à un certain ​FPS, ou ils peuvent être utilisés pour savoir quand une animation ​à besoin d'​être mise à jour, etc. 
  
-==== Basic Example ​====+==== Exemple basique ​====
  
-Building on the [[allegro:​events#​Basic_Example|previous example]] we will extend the program to have a regular ​update ​frequency.+Construit à partir de l'[[allegro:​events#​Basic_Example|exemple précédent]] afin d'​avoir une fréquence d'update ​stable.
  
 <file c main.c> <file c main.c>
Ligne 26: Ligne 26:
    ​ALLEGRO_EVENT_QUEUE *event_queue = NULL;    ​ALLEGRO_EVENT_QUEUE *event_queue = NULL;
    ​ALLEGRO_TIMER *timer = NULL;    ​ALLEGRO_TIMER *timer = NULL;
 +   ​ALLEGRO_EVENT ev;
    bool redraw = true;    bool redraw = true;
  
Ligne 66: Ligne 67:
    ​while(1)    ​while(1)
    {    {
-      ALLEGRO_EVENT ev; 
       al_wait_for_event(event_queue,​ &ev);       al_wait_for_event(event_queue,​ &ev);
  
Ligne 91: Ligne 91:
 </​file>​ </​file>​
  
-==== Walk through ​====+==== Détails ​====
  
-A few new things, and a few changed things this time.+Cette fois-ci nous avons quelques nouveautés et quelques modifications.
  
 <code c>const float FPS = 60;</​code>​ <code c>const float FPS = 60;</​code>​
-Here's the rate we want to limit our update ​logic to.+C'est le ratio pour limiter la fréquence d'​update.
  
 <code c>   timer = al_create_timer(1.0 / FPS);</​code>​ <code c>   timer = al_create_timer(1.0 / FPS);</​code>​
-Initialize our timer to tick **1.0 / FPS** seconds per tick.+On initialise notre timer à **1.0 / FPS** seconde par tick.
  
 <code c>   ​al_register_event_source(event_queue,​ al_get_timer_event_source(timer));</​code>​ <code c>   ​al_register_event_source(event_queue,​ al_get_timer_event_source(timer));</​code>​
-Register the timer'​s event source ​in our event queue so we can fetch the events ​later.+On dirige la source ​d'events ​du timer vers notre queue de manière à les récupérer plus tard.
  
 <code c>   ​al_start_timer(timer);</​code>​ <code c>   ​al_start_timer(timer);</​code>​
-ObviousThis starts our timer. Without this, it won't generate any events.+évidentcette instruction démarre notre timer sans laquelle nous aurions aucun events.
  
 <code c>      al_wait_for_event(event_queue,​ &​ev);</​code>​ <code c>      al_wait_for_event(event_queue,​ &​ev);</​code>​
-Changed up the event handling a bitSince we now have regular ​events ​coming inwe don't need to worry about getting stuck in the wait function. **al_wait_for_event** ​will wait forever if no even comes in.+Nous modifions un peuMaintenant que nous avons régulièrement des events, ​nous n'avons plus besoin de nous inquiéter d'​être bloqué par cette fonction. **al_wait_for_event** ​attendra un event pour toujours.
  
 <code c>      if(event.type == ALLEGRO_EVENT_TIMER) { <code c>      if(event.type == ALLEGRO_EVENT_TIMER) {
          ​redraw = true;          ​redraw = true;
       }</​code>​       }</​code>​
-And here we check for the timer event, ​if this event is a timer eventtrigger a redrawIf we had any game logic to take care ofit would go in here.+Ici nous vérifions que nous avons bien affaire à un event de type Timersi c'est le casnous demandons de redessinerSi nous devons mettre à jour la logique du jeunous devons aussi le faire ici.
  
 <code c>      if(redraw && al_is_event_queue_empty(event_queue)) { <code c>      if(redraw && al_is_event_queue_empty(event_queue)) {
Ligne 120: Ligne 120:
          ​al_flip_display();​          ​al_flip_display();​
       }</​code>​       }</​code>​
-Why the crazy logical ​AND? We want to make sure the event queue is completely empty before we actually do our redraw, otherwise the update loop could fall very far behindSurethat doesn't matter right nowbut it will in future examples.+Pourquoi mettre un AND logique iciNous devons être sûr que notre queue d'​events est vide avant de redessiner à l'​écranBien surça n'a aucun intérêt maintenantmais ça en aura pas la suite.
  
-So we check if redraw ​is true, and the queue is emptyand if both are true, we clear the current ​display, ​flip the displayclear the redraw ​flagand resume the loop.+Donc on vérifie si **redraw** est **true**et si la queue est videsi les deux sont true, alors peint le display, ​on échange les bufferson met redraw ​à **false**et le boucle recommence.
  
-Like the previous example, this one will exit when you press the window's close button.+Comme dans l'exemple précédent,​ celui-ci se termine quand vous cliquez sur le bouton //quitter// de la fenêtre.
  
 <code c>   ​al_destroy_timer(timer);</​code>​ <code c>   ​al_destroy_timer(timer);</​code>​
-Uninstall our timer.+Désinstalle notre Timer .
  
-And that wraps up basic frame limiting with timers in Allegro 5.+Ce qui conclut notre article sur les Timers d'Allegro 5.
  
-[[allegro:​events|Précédent]] << [[allegro:​start|Sommaire]] >> [[allegro:​bitmaps|Suivant]]+[[allegro:​events|Précédent]] << [[allegro:​start#articles|Sommaire]] >> [[allegro:​bitmaps|Suivant]]
allegro/timers.1323071305.txt.gz · Dernière modification: 2011/12/05 08:48 par mrhide