Gérer les touches directionnelle (C/C++) Le sujet est résolu
Règles du forum
Pour toute demande d'aide commencez par indiquer :
Pour toute demande d'aide commencez par indiquer :
- votre matériel complet et votre système d'exploitation.
- Si ces conditions ne sont pas remplies, où bien incomplètes le sujet ne sera pas traité.
- Et surtout donnez de vos nouvelles sans laisser traîner pendant des semaines, voire des mois !
Gérer les touches directionnelle (C/C++)
Hello la team, voilà mon problème, je dois créer un petit jeu permettant de générer des colonnes, c-à-d, si l'utilisateur décide d'aller a droite, une colonne sera générer. Programmation en mode console bien sûr.
Le problème n'est pas la génération d'une colonne mais la gestion des déplacements. J'aimerai utiliser les flèches directionnelles sur le clavier cependant, je n'arrive pas a gérer les codes ascii des touches. Par exemple, le code ascii de la flèche de droite est 224 77, du coup, je n'arrive pas a gérer le code ascii dans le programme même, j'ai fais quelques recherche qui sont parfois un peu plus poussé pour moi sachant que je n'ai pas encore la POO. J'étais tombé sur un include de ncurses mais je ne comprenais pas bien comment utiliser cette fonction.
Enfin bref, mon seul et unique problème est l'utilisation des flèches directionnelles pour soit se déplacer vers la gauche ou vers la droite.
PS: Pour presser une touche, j'utilise la fonction kbhit() et getch().
Merci pour votre aide.
Le problème n'est pas la génération d'une colonne mais la gestion des déplacements. J'aimerai utiliser les flèches directionnelles sur le clavier cependant, je n'arrive pas a gérer les codes ascii des touches. Par exemple, le code ascii de la flèche de droite est 224 77, du coup, je n'arrive pas a gérer le code ascii dans le programme même, j'ai fais quelques recherche qui sont parfois un peu plus poussé pour moi sachant que je n'ai pas encore la POO. J'étais tombé sur un include de ncurses mais je ne comprenais pas bien comment utiliser cette fonction.
Enfin bref, mon seul et unique problème est l'utilisation des flèches directionnelles pour soit se déplacer vers la gauche ou vers la droite.
PS: Pour presser une touche, j'utilise la fonction kbhit() et getch().
Merci pour votre aide.
Re: Gérer les touches directionnelle (C/C++)
Bonjour,
Exemple de code C++ (mais fonctionne en C, en remplaçant "std:: cout" par "printf" et reprendre les bons "include").
La fonction PosCurseur, positionne le curseur à la position passé en paramètre (PosH et PosV).
Fonctionne sur Windows mais n'est pas portable à d'autres systèmes.
Exemple de code C++ (mais fonctionne en C, en remplaçant "std:: cout" par "printf" et reprendre les bons "include").
La fonction PosCurseur, positionne le curseur à la position passé en paramètre (PosH et PosV).
Fonctionne sur Windows mais n'est pas portable à d'autres systèmes.
Code : Tout sélectionner
#include <iostream>
#include <windows.h>
#include <tchar.h>
#include <cstdio>
void PosCurseur(int PosH,int PosV)
{
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE); // Handle de la console.
COORD Position; // Position du curseur.
Position.X=(SHORT)PosH; // Position horizontale.
Position.Y=(SHORT)PosV; // Position Verticale.
SetConsoleCursorPosition(H, Position); // Do job !
}
int main(int argc, char** argv)
{
PosCurseur(35, 6);
std::cout << "Hello world!" << std::endl;
return 0;
}
Re: Gérer les touches directionnelle (C/C++)
Hello merci pour ton message mais ça me permettra d'utiliser les touches directionnelle?
Re: Gérer les touches directionnelle (C/C++)
ncurse est une biblliothèque mais pour l'utiliser faut déjà bien connaître le c.
Il te faut deux getch
Le premier pour filtrer le code 224
Le second pour récupérer le code utile
Ensuite tu testes ce code
Il te faut deux getch
Le premier pour filtrer le code 224
Code : Tout sélectionner
if((a=getch())==224)
Code : Tout sélectionner
b=getch();
Code : Tout sélectionner
if(b==77)...
Re: Gérer les touches directionnelle (C/C++)
Ok donc tu utilises 2 variables, faut-il les déclarer en char ou bien en int? J'en ai vu certains qui les déclaraient en int.
Re: Gérer les touches directionnelle (C/C++)
Peu importe, il y a parfaite adéquation entre char et int et ils sont interchangeables.
char c = 'a' ou int i = 97.
Maintenant, tu ne gère pas des touches standard mais des touches spéciales, donc tu travaille avec les codes ASCII et tes variables sont forcément de type int.
char c = 'a' ou int i = 97.
Maintenant, tu ne gère pas des touches standard mais des touches spéciales, donc tu travaille avec les codes ASCII et tes variables sont forcément de type int.
Re: Gérer les touches directionnelle (C/C++)
OH MON DIEU CA FONCTIONNE!!!! Je crois que je vais pleurer... bon le truc maintenant c'est qu'en faites, suis obligé d'appuyer sur une lettre avant et ensuite appuyer sur une flèche or, mon but est d'appuyer directe sur une flèche.
EDIT: Ca fonctionne parfaitement, merci beaucoup pour ton aide
EDIT: Ca fonctionne parfaitement, merci beaucoup pour ton aide
