Comment commander les boutons flèches en c++

Techno01 -  
 Techno01 -
Bonjour tout le monde je veux commander les touches flèches par exemple:
# include <iostream>
using namespace std;

main()
{
char key = ' ' ;// Justement une initialisation
while(key != 'touche droite du clavier')
{
cout << "cliquer sur le bouton droit pour sortir" << endl;
}return 0;
}

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Je ne crois pas qu'il y ait de méthodes standard pour ça, il est donc important de savoir sur quel système tu codes (Windows, Linux...) ou alors t'intéresser à des librairies comme glut
    0
  2. Techno01
     
    Merci KX
    d'abord je code sur Windows ,et je veux seulement avoir accée aux touches flèches pour un jeu qui controllent les mouvements et pas des caractères comme
    a(haut),q(bas)...
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      J'ai bien compris ton problème ^^

      Avec getch(), les "special key" renvoient d'abord un caractère ASCII commun, à la suite duquel tu dois faire un deuxième getch() pour les distinguer.
      Remarque : dans la documentation, on trouve que ce caractère est char==0, chez moi, c'est char==-32 donc il faudrait regarder en détail chez toi savoir si c'est l'un ou l'autre...

      Exemple :

      #include <stdio.h>
      #include <conio.h>
      
      int main()
      {
          while (true)
          {
              char c = getch();
      
              if (c==-32)
              {
                  char s = getch();
                  printf("Special Key : %d\n",(int) s);
              }
              else
              {
                  printf("Normal Key : %d\n",(int) c);
              }
          }
      }
      

      Pour te servir de ça tu peux donc faire un getch, et un switch, et lorsque tu as -32 tu refais un switch avec le nouveau getch.

      Exemple :

      #include <stdio.h>
      #include <conio.h>
      
      int main()
      {
          while (true)
          {
              char c = getch();
      
              switch (c)
              {
              case -32 :
                  switch (getch())
                  {
                      case 72 : printf("Touche HAUT\n"); break;
                      case 75 : printf("Touche GAUCHE\n"); break;
                      case 77 : printf("Touche DROITE\n"); break;
                      case 80 : printf("Touche BAS\n"); break;
                  }
                  break;
      
              default : printf("Touche %c\n",c); 
              }
          }
      }
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Remarque : j'avais oublié que tu faisais du C++ alors j'ai fais le code en C, mais c'est compatible ;-)
      0
    3. Techno01
       
      D'abord merci beaucoup KX de ton aide je peux vous dire que je programme avec c++ mais je n'ai aucun problème avec c aussi j'ai un question pour case 72: // est ce qu'il désigne que si je clique sur la flèche droite le programme va écrire Touche DROITE
      0
    4. KX Messages postés 19031 Statut Modérateur 3 020
       
      Avec le premier code quand je tape sur la flèche de droite il m'affiche "Special Key : 77"
      Donc dans le deuxième code le case 77 doit correspondre à la flèche de droite aussi.
      Par contre le 72 correspondant à la touche du haut, c'est "Touche HAUT" qu'il devrait afficher !

      Mais il faut vérifier avec le premier code que c'est bien les mêmes valeurs sur ta machine.
      Je pense qu'il doit exister des constantes genre KEY_UP, KEY_DOWN... pour ne pas avoir à rechercher ces valeurs à la main...
      0
    5. nicocorico Messages postés 846 Statut Membre 138
       
      Ou peut-être Vk_Up, Vk_Down... ce sont les définitions Virtual Keys de windows...
      0