Outils pour utilisateurs

Outils du site


allegro:input

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

Lien vers cette vue comparative

allegro:input [2011/12/05 15:36]
mrhide [Input]
allegro:input [2012/08/27 03:33] (Version actuelle)
mrhide [Détails]
Ligne 1: Ligne 1:
-===== Input =====+===== Allegro — Input =====
  
 Cet article explique le fonction de l'​Input clavier et souris. Cet article explique le fonction de l'​Input clavier et souris.
  
-==== Basic Mouse Example ​====+===== Exemple basique d'​Input souris =====
  
-Building on the Basic Bitmaps examplewe change the box to move with the mouse.+Basé sur l'​exemple de l'​article précédentla //boite// suit la souris dans cet exemple.
  
 <file c main.c> <file c main.c>
Ligne 124: Ligne 124:
 }</​file>​ }</​file>​
  
-=== Walk through ​===+==== Détails ====
  
-Much like previous examples we will only go over the new bits.+On ne détaille ici que les nouveautés.
  
 <code c>   ​if(!al_install_mouse()) { <code c>   ​if(!al_install_mouse()) {
Ligne 132: Ligne 132:
       return -1;       return -1;
    ​}</​code>​    ​}</​code>​
-Setup the mouse subsystem. **al_install_mouse** ​returns ​false if it failsand we exit if that happens.+Initialise la gestion de la souris. **al_install_mouse** ​renvoie ​false en cas d'​échecdans ce cas on quitte le programme.
  
 <code c>   ​al_register_event_source(event_queue,​ al_get_mouse_event_source());</​code>​ <code c>   ​al_register_event_source(event_queue,​ al_get_mouse_event_source());</​code>​
-Register the mouse's event source with our event queue. Without this we won't get any mouse events.+Dirige la source d'​event ​de la souris vers notre queue d'​events. Nécessaire pour obtenir les events liés à la souris.
  
 <code c>      else if(ev.type == ALLEGRO_EVENT_MOUSE_AXES || <code c>      else if(ev.type == ALLEGRO_EVENT_MOUSE_AXES ||
Ligne 143: Ligne 143:
          ​bouncer_y = ev.mouse.y;          ​bouncer_y = ev.mouse.y;
       }</​code>​       }</​code>​
-**ALLEGRO_EVENT_MOUSE_AXES** ​event is generated when the mouse is moved by the userand a **ALLEGRO_EVENT_MOUSE_ENTER_DISPLAY** ​is generated when ever the mouse enters the display. ​Here we update our box's position to the mouse position ​received.+Un event de type **ALLEGRO_EVENT_MOUSE_AXES** ​est généré sur un déplacement de la souris par l'​utilisateuret un event de type **ALLEGRO_EVENT_MOUSE_ENTER_DISPLAY** ​est généré quand la souris entre dans notre display. ​Ici on met à jour la position ​de notre boite aux coordonnées de la souris.
  
 <code c>      else if(ev.type == ALLEGRO_EVENT_MOUSE_BUTTON_UP) { <code c>      else if(ev.type == ALLEGRO_EVENT_MOUSE_BUTTON_UP) {
           break;           break;
       }</​code>​       }</​code>​
-Should any mouse button be pressed, immediately exit.+Termine le programme en cas d'​appui sur n'​importe quel bouton de la souris.
  
-That was pretty ​simple ​no?+C'​était plutôt ​simple ​non?
  
-==== Basic Keyboard Example ====+**ATTENTION !!** L'​event source de la souris flood, pour éviter d'​avoir un jeu qui lag, je recommande de vérifier que l'​event queue est vide avant de faire l'​affichage,​ ou mieux, d'​utiliser deux event queues, une pour actualiser l'​affichage et une autre qui gère l'​input. avec un thread pour les exécuter en même temps.
  
-Building upon the Basic Bitmaps examplewe will learn to use the keyboard events.+===== Exemple basique d'​Input clavier ===== 
 + 
 +Basé sur l'​exemple de l'​article précédentla boite suit la direction selon les touches du clavier
  
 <file c main.c> <file c main.c>
Ligne 327: Ligne 329:
 }</​file>​ }</​file>​
  
-=== Walk-through ​=== +==== Détails ==== 
  
 <code c>enum MYKEYS { <code c>enum MYKEYS {
    ​KEY_UP,​ KEY_DOWN, KEY_LEFT, KEY_RIGHT    ​KEY_UP,​ KEY_DOWN, KEY_LEFT, KEY_RIGHT
 };</​code>​ };</​code>​
-Define ourselves some key constants to use with our key state array.+On définit nous-même ces constantes des touches qu'on utilisera dans le tableau des status des touches.
  
 <code c>bool key[4] = { false, false, false, false };</​code>​ <code c>bool key[4] = { false, false, false, false };</​code>​
-Define our key state array. This is where we'll store the state of the keys we're interested in.+C'est notre tableau des status des touches, dans lequel on stockera le status des touches qui nous intéresse.
  
 <code c>   bool doexit = false;</​code>​ <code c>   bool doexit = false;</​code>​
-Define a flag to short circuit our while loop.+Cette variable pour court-circuiter notre boucle While.
  
 <code c>   ​if(!al_install_keyboard()) { <code c>   ​if(!al_install_keyboard()) {
Ligne 344: Ligne 346:
       return -1;       return -1;
    ​}</​code>​    ​}</​code>​
-Initialize the keyboard subsystem. **al_install_keyboard** ​will return ​false if it failswe exit if that happens.+Initialise la gestion du clavier. **al_install_keyboard** ​retourne ​false en cas d'​échecon termine le programme si ça arrive.
  
 <code c>   ​al_register_event_source(event_queue,​ al_get_keyboard_event_source());</​code>​ <code c>   ​al_register_event_source(event_queue,​ al_get_keyboard_event_source());</​code>​
-Register the keyboard event source ​with our event queue. ​Without this we will never get any keyboard ​events.+Dirige la source ​d'event du clavier vers notre queue d'​eventsNécessaire pour obtenir les events ​liés au clavier
  
 <code c>   ​while(!doexit)</​code>​ <code c>   ​while(!doexit)</​code>​
-Change up our while loop to exit should ​**doexit** ​be true. Gives us a cheap way to exit.+Permet de sortie de la boucle ​while dès que **doexit** ​passe à true. Une manière simple de quitter.
  
 <code c>         ​if(key[KEY_UP] && bouncer_y >= 4.0) { <code c>         ​if(key[KEY_UP] && bouncer_y >= 4.0) {
Ligne 367: Ligne 369:
             bouncer_x += 4.0;             bouncer_x += 4.0;
          ​}</​code>​          ​}</​code>​
-Here we check to see if one of our keys are downand move our box in the direction ​of the key press.+On vérifie si l'une de nos touches a été presséeet on déplace notre boite dans la direction ​voulue.
  
-To save a bit of space and effort, we're going to go through both key events in parallel.+Pour économiser un peu de place et d'​efforts, ​To save a bit of space and effort, we're going to go through both key events in parallel.
  
 <code c>      else if(ev.type == ALLEGRO_EVENT_KEY_DOWN) {</​code>​ <code c>      else if(ev.type == ALLEGRO_EVENT_KEY_DOWN) {</​code>​
-The **ALLEGRO_EVENT_KEY_DOWN** ​event is generated whenever a key is pressed+Un event de type **ALLEGRO_EVENT_KEY_DOWN** ​est généré quand une touche est pressée
  
 <code c>      else if(ev.type == ALLEGRO_EVENT_KEY_UP) {</​code>​ <code c>      else if(ev.type == ALLEGRO_EVENT_KEY_UP) {</​code>​
-The **ALLEGRO_EVENT_KEY_UP** ​event is generated whenever a key is released.+Un event de type **ALLEGRO_EVENT_KEY_UP** ​est généré quand une touche est relachée.
  
 <code c>         ​switch(ev.keyboard.keycode) {</​code>​ <code c>         ​switch(ev.keyboard.keycode) {</​code>​
-We switch ​on the **keycode** ​member of the keyboard event structureThe **keycode** ​member contains an integer mapping to an allegro ​keycode.+On switch ​sur le membre ​**keycode** ​de la structure ​keyboard event. **keycode** ​contient un entier de la cartographie clavier d'allegro.
  
 <code c>            case ALLEGRO_KEY_*:​ <code c>            case ALLEGRO_KEY_*:​
                ​key[KEY_*] = true; || key[KEY_*] = false;                ​key[KEY_*] = true; || key[KEY_*] = false;
                ​break;</​code>​                ​break;</​code>​
-With both the key press and release eventswe store the state of the pressed key into our **key[]** ​array.+Dans les deux types d'​event reçuson stocke l'​état de la touche dans notre tableau ​**key[]**.
  
 <code c>            case ALLEGRO_KEY_ESC:​ <code c>            case ALLEGRO_KEY_ESC:​
                ​doexit = true;                ​doexit = true;
                ​break;</​code>​                ​break;</​code>​
-Here we set our **doexit** ​flag to true, to cause the loop to exit the next time through.+Ici on passe **doexit** ​à true pour terminer la boucle au prochain tour.
  
-Whew. A bit longer than the mouse examplebut still pretty ​simple.+Un peu plus long que l'​exemple sur la sourismais tout aussi simple.
  
-[[allegro:​bitmaps|Précédent]] << [[allegro:​start|Sommaire]] >> [[allegro:​threads|Suivant]]+[[allegro:​bitmaps|Précédent]] << [[allegro:​start#articles|Sommaire]] >> [[allegro:​threads|Suivant]]
allegro/input.1323095773.txt.gz · Dernière modification: 2011/12/05 15:36 par mrhide