begin process at 2012 05 30 00:31:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

opengl/glut Gestion du clavier (plusieurs touches)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

opengl/glut Gestion du clavier (plusieurs touches)

vendredi 25 février 2005 à 19:43:44 | opengl/glut Gestion du clavier (plusieurs touches)

gravel


Bonjours, je cherche un moyen de géré plusieur touche en meme temps. j'ai chercher un peux partout lit beaucoup de document sur la gestion du clavier mais aucun marche pour plusieur touche en meme temps : Pour l'instant je fais.

dans mon main.cpp:

    glutKeyboardFunc(Keyboard);
    glutSpecialFunc(Special);
dans mon clavier.h

void Keyboard(unsigned char key, int x, int y) {   
}

void Special(int key,int x,int y) {
if (!gameover) if (!pause) {
if ( key == GLUT_KEY_UP ) if(spaceship.posy<500) spaceship.posy+=8;  // ne marche pas a verifier
if ( key == GLUT_KEY_DOWN ) if(spaceship.posy>100)  spaceship.posy-=8;  //ne marche pas a verifier
if ( key == GLUT_KEY_RIGHT ) if(spaceship.posx<720) spaceship.posx+=8;
if ( key == GLUT_KEY_LEFT )  if(spaceship.posx>0) spaceship.posx-=8;
   } 
}
Pourquoi je ne peux avoir plusieur touche en meme temps?

vendredi 25 février 2005 à 21:23:31 | Re : opengl/glut Gestion du clavier (plusieurs touches)

luhtor

Si tu mets rien dans la fonction keyboard, autant ne pas la mettre.
Je comprend pas bien ta fonction, car la fonction SpecialFunc de glut, ca détecte l'appuis sur une touche, si tu reste appuyé, c'est comme si tu auras appuyé qu'une fois, c'est vraiment ca que tu veux ?

En tout cas, voici en gros le schéma qu'il faut adopter:

void Special(int key, int x, int y)
{
    switch(key)
    {
       case GLUT_KEY_UP :
          IS_KEY_UP = TRUE;
       break;
       case GLUT_KEY_DOWN :
          IS_KEY_DOWN = TRUE;
       break;
       case GLUT_KEY_LEFT :
          IS_KEY_LEFT = TRUE;
       break;
       case GLUT_KEY_RIGHT :
          IS_KEY_RIGHT = TRUE;
       break;
       }
}


void SpecialUp(int key, int x, int y)
{
    switch(key)
    {
       case GLUT_KEY_UP :
          IS_KEY_UP = FALSE;
       break;
       case GLUT_KEY_DOWN :
          IS_KEY_DOWN = FALSE;
       break;
       case GLUT_KEY_LEFT :
          IS_KEY_LEFT = FALSE;
       break;
       case GLUT_KEY_RIGHT :
          IS_KEY_RIGHT = FALSE;
       break;
    }
}   

Tu as donc des variables boolean qui mémorise l'état appuyé ou non d'une touche, ainsi, la touche appuyé est prise a compte a chaque affichage de frame, si tu restes appuyé. Après, dans ta fonction affichage, faut définir ce qu'il faut faire si la variable IS_KEY_UP par exemple, est appuyé. Etc...

La fonction SpecialUp détecte le relachement d'une touche, rien de particulier donc.
Et la, l'appuis sur plusieurs touches fonctionne très bien.

Dans ta fonction, tu rajoutes bien sur:
    glutSpecialFunc(Special);
    glutSpecialUpFunc(SpecialUp);

Aller a +
dimanche 27 février 2005 à 02:28:04 | Re : opengl/glut Gestion du clavier (plusieurs touches)

gravel


ok ma aller essayer cela et ma reviennir te dire si ca marche ca devrais si ca permet de pouvoir avoir avoir plusieur touche en meme temps

mercredi 2 mars 2005 à 05:47:27 | Re : opengl/glut Gestion du clavier (plusieurs touches)

gravel


merci ca marche (:



Cette discussion est classée dans : int, clavier, key, glut, spaceship


Répondre à ce message

Sujets en rapport avec ce message

pb de Z-buffer ac openGL -> Help! [ par Arnaud16022 ] bonjour tt le monde!quelqun pourrait me dire pourqoui le Z-buffer marche pas?pasque le dernier (4ème) triangle dessiné apparait tjs au dessus, meme s' créer une fenetre en plus d'une fenetre glut [ par ldllaurent82 ] Bonjour,J'aimerais pouvoir créer un interface (avec boutons et autres) en plus de ma fenetre opengl ouverte avec glut.Le problème c'est que je ne peux Comment utiliser les flèches du clavier pour générer des évènements [ par pac2 ] Salut,Voilà comment je gère les évènements générés quand on enfonce une des touche du clavier:void keyboard (unsigned char key, int x, int y){ swit Mélanger OpenGL et Glut [ par tintin72 ] SalutJ'aimerai me servir des fonctions d'entrée clavier/souris proposées par Glut, mais j'ai vu que Glut s'initialise avec une fonction main façon C.i opengl.glut : gestion clavier [ par _Jonathan ] salut a tousvoila, j'arrive pas a utiliser la fonction glutSpecialUpFunc (chui sous devc++).glutSpecialFunc marche.Si kelkun pourrai m'expliker : ---- affiche .tga opengl/c++/glut [ par gimli123 ] Bonjour, ça ne compile pas(je compile avec visual studio.net 2003) et je ne sais pas pourquoi, je suis debutant ça serait sympas de m'aider merci beau gestion du clavier avec Glut [ par spirit ] salut à tous,je sais gérer les fonctions glutKeyboardFunc et glutSpecialFunc mais je n'arrive pas à détecter la combinaison de touches "Ctrl+A" alors Probleme fonctions [niveau debutant] [ par zzzzzz ] en fait je voulais faire une applic qui nous demande un nombre de part et de fin si on met par exemple 2 et 7 sa ecrira 234567 grace a une boucle. le Hot Key [ par garslouche ] Bonjour,je voudrais permettre aux utilisateurs de choisir leurs propres raccourcis clavier. J'ai voulu utiliser CHotKeyCtrl mais il y a plein de touch


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales