Tester entrées clavier

Fermé
Xemalia - 10 mars 2015 à 02:01
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 13 mars 2015 à 22:18
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
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
13 mars 2015 à 20:18
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 ?
0
je veux que si il reste appuyer sur la touche ou non, ça compte pour un appuie et que ça renvoi une seule fois l'appui donc que ça bloque une boucle while tant qu'il reste appuyer, et je code aussi en c++ ducoup si ta la rep en c++ ^^
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
13 mars 2015 à 22:18
Pas sûr d'avoir tout compris.
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 ?
0
Orci76 Messages postés 92 Date d'inscription lundi 20 décembre 2010 Statut Membre Dernière intervention 21 avril 2015 5
Modifié par Orci76 le 13/03/2015 à 21:18
#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
0