Touches Haut, Bas ...

theoriginalstpierre Messages postés 28 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 14 février 2008 - 18 déc. 2003 à 21:58
theoriginalstpierre Messages postés 28 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 14 février 2008 - 20 déc. 2003 à 21:07
Bonjour,

J'expose l'affaire :

1) je veux :

if (touche bas enfoncée) printf(" Touche Bas Enfoncée\n");

2) je ne sais pas comment faire touche bas enfoncée

si quelqu'un pouvait m'aider...
Merci.

si ça peut être utile, je prog avec dev-c++.

Flo

10 réponses

SMarmotte Messages postés 53 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 12 novembre 2005
18 déc. 2003 à 22:57
salut
je te propose ceci :
testé sous VC++ 6.0

for(;;)
{
if(kbhit())
{
int sc=getch();
if(sc==27)
{
printf("ESC\n");
break;
}

if(sc==224)
{
int asc=getch();
printf("%d " , asc);
if(asc==80) printf("bas\n");
if(asc==72) printf("haut\n");
if(asc==75) printf("gauche\n");
if(asc==77) printf("droite\n");

}
}
}
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
19 déc. 2003 à 00:37
Salut,
Tu peux aussi utiliser GetAsyncKeyState(...).
0
SMarmotte Messages postés 53 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 12 novembre 2005
19 déc. 2003 à 09:31
c'est vrai, mais ca dépend de sur quel OS il programme LOL

Pour Windows les 2 méthodes sont Ok (la 2nde est peut être mieux car plus courte)
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
19 déc. 2003 à 13:34
Salut,
Inutile de présiser l'OS, il utilise devc++.
Dans tous les cas, GetAsyncKeyState est mieux selon moi.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
theoriginalstpierre Messages postés 28 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 14 février 2008
20 déc. 2003 à 12:42
Merci mais j'ai encore des problèmes :
kbhit(), chez moi, ça ne marche pas...
c'est bien dans conio.h non?

mon OS : XP (la cause du problème??)

sinon pour GetAsyncKeyState()
j'ai cru comprendre qu'il fallait lui passer un paramètre correspondant à la touche.
où puis-je trouver une liste me donnant la correspondance pour chaque touche? (surtout touches directionnelles).

A ça près, il me semble que GetAsyncKeyState() soit la fonction que je cherchais.

Merci à vous

Flo
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
20 déc. 2003 à 13:21
Salut,
kbhit() est une fonction de conio.h, c'est connu ca marche jamais comme on veut ces trucs.

GetAsyncKeyState():
Sur MSDN, ce sont les "virtual key codes".

Dans ton cas:
VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT

if(GetAsyncKeyState(VK_UP)) {
...
}
0
theoriginalstpierre Messages postés 28 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 14 février 2008
20 déc. 2003 à 18:09
Merci beaucoup, cela fonctionne parfaitement!
je suppose que pour les autres touches ca donne VK_A ou VK_B, non?
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
20 déc. 2003 à 18:14
Salut,
Faut chercher sur msdn, y'a une page expres qui te dira tout
0
SMarmotte Messages postés 53 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 12 novembre 2005
20 déc. 2003 à 18:30
salut à tous,
j'ai deux trucs à dire

1. on ne se fout pas de l'OS car faut pas penser que Windows est le seul OS (cependant faut reconnaitre que c'est le seul sur lequel on peut vraiment bosser). Y'en a quand même qui programme en C sous UNIX ou LINUX, ....
-> c'est pour ca que je recommande kbhit()

2. la technique GetAsyncKeyState() fonctionne même si l'application n'est pas en premier plan. Il faudra donc s'assurer que l'application est au premier plan.

maintenant l'important est que ca marche ...
0
theoriginalstpierre Messages postés 28 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 14 février 2008
20 déc. 2003 à 21:07
1 - kbhit() ne fonctionne pas chez moi (XP, devc++)
2 - justement ça m'arrange si ça fonctionne aussi quand elle n'est pas au premier plan.

en tout cas à tous!

Flo
0
Rejoignez-nous