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