begin process at 2012 02 12 17:56:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

GESTION CLAVIER SDL


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

GESTION CLAVIER SDL

dimanche 4 septembre 2005 à 11:41:18 | GESTION CLAVIER SDL

Batman60

voici un bout de code qui  sert à me déplacer dans une scène 3D opengl ,le problème c'est qu'il faut à chaque fois appuyer sur la touche pour ce déplacer
comment faire pour un déplacement continuel en laissant  les touches pressées
je débute avec la lib SDL
GLfloat z=4.0f;
GLfloat x=1.0f;
void handleKeyPress( SDL_keysym *keysym )
{
    switch ( keysym->sym )
 {
 case SDLK_ESCAPE:
     Quit( 0 );
     break;
 case SDLK_w:
        z+=4.0f;
        break;
    case SDLK_x:
        z-=4.0f;
        break;
    case SDLK_LEFT:
        x+=1.0f;
        break;
    case SDLK_RIGHT:
        x-=1.0f;
        break;                
 default:
     break;
 }
    return;
}
gluLookAt(x ,0.0,z  ,0.0,0.0,0.0,0.0,1.0,0.0);
MERCI

dimanche 4 septembre 2005 à 15:06:23 | Re : GESTION CLAVIER SDL

NeoUmbrella

Pour une gestion du clavier avec SDL je ferais comme ceci :

SDL_Event Event;
while(SDL_PollEvent (&Event))
{   
   switch(Event.type)
   {
      case SDL_KEYDOWN: 
         switch(Event.key.keysym.sym)
         {
            case SDLK_LEFT:
               // Deplacement vers la gauche
               break;
          }
    }
}

Puis pour un meilleur gameplay, lors de l'evenement SDL_KEYUP tu test si une autre touche est enfoncée avec SDL_GetKeyState(), comme ca tu as un déplacement continue.
lundi 5 septembre 2005 à 15:24:07 | Re : GESTION CLAVIER SDL

keil


utilise un tableau a 4 cases (haut bas gauche droite)
key pressed -> 1 dans la case correspondante
key released -> 0 dans la case correspondante

juste avant ton draw() appelle une fonction update()

update contient des test sur les touches enfoncées

if ( tableau[0] )
        z+=4.0f;
if ( tableau[1] )
         ...

etc
lundi 5 septembre 2005 à 21:32:41 | Re : GESTION CLAVIER SDL

Batman60

merci les gars entre temps on m'a montré cette solution ci-dessous qui marche impeccable

char intern_key[400];
void UpdateEvents()
{
 SDL_Event event;
 while(SDL_PollEvent(&event))
 {
  switch (event.type)
  {
  case SDL_KEYDOWN:
   intern_key[event.key.keysym.sym]=1;
   break;
  case SDL_KEYUP:
   intern_key[event.key.keysym.sym]=0;
   break;
              
  }
 }
}
 
int Key(int sdlcode)
{
 int ret=intern_key[sdlcode];
     
 return ret; 
}
puis dans la fonction main:
while(!Key(SDLK_ESCAPE))
    {
      UpdateEvents();
      if(Key(SDLK_LEFT))x+=0.01f;
      if(Key(SDLK_RIGHT))x-=0.01f;
      if(Key(SDLK_x))z+=0.01f;
      if(Key(SDLK_s))z-=0.01f;
      drawGLScene( );
      initGL( );                     
    }


Cette discussion est classée dans : case, break, sdl, 0f, sdlk


Répondre à ce message

Sujets en rapport avec ce message

Gros soucis SDL ...... argh [ par courjete ] Alors voila, je me met à la programmation en c++ et dans une volonté de tester mes connaissances, préparer des fonctions d'affichage, je cherche à fai SDL porbleme [ par fahdovski ] IL Y'A EXECUTION MAIS LE PC PLANTE IL DEVIENT TRES LENT, MAIS POURQUOI??????jE TRAVAILLE SUR CODE::BLOCKS SOUS LINUXAVANT CA MARCHAIS IMPEC QUESQUI C' pour que mes touches soient détectées immédiatement [ par snake57 ] Bonjour,j'ai un petit soucis avec la détection de touche. Je vous met le bout de code concerné plus bas pour que vous ayez une idée.Enfait je détecte Deplacement de plusieurs sprites à l'écran (SDL) [ par rasolofomanana ] Bonjour à tous, je débute en C et j'essaie de créer un programme où l'on peut déplacer plusieurs sprites à l'écran, par cases de 40px. Le problème es [jeu 2d] Snake ,petit bug jeu [ par zakuza ] Bonjour à tous , je suis entrain de m'amuser à programmer un petit snake histoire de pratiquer,bon il ne fonctionne pas trop mal mais j'ai quelques bu menu en c [ par sebz10 ] bonjour, je voudrais créer un menu en c de façon a ce que quand je selectione un proposition (ex: addition) je puisse en suite additions ou tonber dan SFML problème de sprites [ par pop70 ] Bonsoir tout le monde, j'ai un problème avec la bibliothèque SFML : Je veux afficher des surfaces de 50px*50px tout les 50px (normal quoi). Le foncti Eternel problème... [ par dayvid75014 ] Bonjour à tous, Voici un ptit bout de code, ayant pour but de récupérer un flux en héxa d'un fichier MPEG et d'en tirer des informations (en-tête, DATE MACHINE en C++ [ par eishtein ] bonjour tout la monde; pouvez vous m'aidez à optimiser la classe suivante de telle sorte à ce qu'elle nous donne la date courante: [code=cpp] class d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 3,292 sec (3)

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