Tester entrées clavier
Xemalia
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
Bonjour tout le monde !
Aujourd'hui je m'ennuie un peu... et j'ai eu l'idée de faire un jeu à la con !
Le but du jeu est plutôt connu, il ressemble à Cookie Clickers. Il suffit de clicker pour gagner 1 point. Problèmes, quand je code en c des jeux, j'utilise tout le temps sdl pour lire mes entrées clavier. Là je ne veux pas utiliser sdl, je crois qu'il y a des moyens avec la librairie windows.h mais je n'ai pas trouvé de forum pouvant m'aider. Car moi je veux juster tester l'appui de la touche, je ne veux pas enregistrer ce qu'elle me donne. Donc si vous avez la réponse à mon problème, n'hésitez pas ! ^^ je vous en serais très reconnaissant :3
Cordialement
Aujourd'hui je m'ennuie un peu... et j'ai eu l'idée de faire un jeu à la con !
Le but du jeu est plutôt connu, il ressemble à Cookie Clickers. Il suffit de clicker pour gagner 1 point. Problèmes, quand je code en c des jeux, j'utilise tout le temps sdl pour lire mes entrées clavier. Là je ne veux pas utiliser sdl, je crois qu'il y a des moyens avec la librairie windows.h mais je n'ai pas trouvé de forum pouvant m'aider. Car moi je veux juster tester l'appui de la touche, je ne veux pas enregistrer ce qu'elle me donne. Donc si vous avez la réponse à mon problème, n'hésitez pas ! ^^ je vous en serais très reconnaissant :3
Cordialement
A voir également:
- Tester entrées clavier
- Télécharger clavier arabe - Télécharger - Divers Web & Internet
- Flash drive tester - Télécharger - Divers Utilitaires
- Tester son pc - Guide
- Clavier de l'ordinateur - Guide
- & Sur clavier - Guide
2 réponses
Tu veux que ton programme bloque sur cette fonction tant que l'utilisateur n'a pas appuyé sur la touche ? Ou que le programme teste l'appuie de la touche sa S s'arrêter sur la fonction ?
#include <stdio.h>
#include <windows.h>
int key_pressed(int key)
{
return (GetAsyncKeyState(key) != 0);
}
int main()
{
int flag = 0;
int key;
while (1)
{
key = key_pressed(VK_LEFT);
if (key && !flag)
printf("LEFT key pressed o/\n");
if (!key && flag)
{
printf("LEFT key released :(\n");
flag = 0;
}
flag = (key ? 1 : 0);
}
return (0);
}
Tu devrais pouvoir un truc comme ça (pas l'habitude du C Windows, désolé), mais c'était assez moche d'être aussi peu portable.
Si tu l'utilises pour un jeu, tu voudras probablement gérer plusieurs keys, et les stockant dans un tableau de state, par exemple.
Sinon, comme son nom l'indique, GetAsyncKeyState() est non bloquant, ce qui fait que ton while (1) va tourner en boucler -- ce que tu peux, ou non, vouloir pour ton jeu --, si tu veux faire autrement, tu peux utiliser getch() (toujours pas portable, mais plus facilement adaptable sous Unix.
PS: Trouvé en 1mn sur Google
Tu peux faire :
int main(void) { int continue=1; while(continue) { /*traitement*/ /*si une touche a été appuyée*/ if (_kbhit()) { int lettre=getchar(); if (lettre=='q') { continue=0; } } } return 0; }Sinon, tu peux utiliser _getch(). Dans ce cas, la fonction attendra que l'utilisateur appuie sur une touche (la lettre n'apparaîtra pas à l'écran).
Note : tu as posté ton sujet en C. Et tu parles de C++... En quel langage le veux-tu ?