Comment commander les boutons flèches en c++

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. Modérateur
    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
    1. 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)...
      1. Modérateur
        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); 
                }
            }
        }
      2. Modérateur
        Remarque : j'avais oublié que tu faisais du C++ alors j'ai fais le code en C, mais c'est compatible ;-)
      3. 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
      4. Modérateur
        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...
      5. Ou peut-être Vk_Up, Vk_Down... ce sont les définitions Virtual Keys de windows...