Comment commander les boutons flèches en c++

Fermé
Techno01 - 9 juil. 2011 à 17:57
 Techno01 - 10 juil. 2011 à 16:30
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

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
10 juil. 2011 à 00:19
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
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
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
10 juil. 2011 à 15:19
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
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
10 juil. 2011 à 15:23
Remarque : j'avais oublié que tu faisais du C++ alors j'ai fais le code en C, mais c'est compatible ;-)
0
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
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
10 juil. 2011 à 16:18
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
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
10 juil. 2011 à 16:27
Ou peut-être Vk_Up, Vk_Down... ce sont les définitions Virtual Keys de windows...
0