begin process at 2012 05 28 21:46:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Comment saisir une touche durant l'execution d'une boucle sans metre en "pause" celle ci en C


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment saisir une touche durant l'execution d'une boucle sans metre en "pause" celle ci en C

mercredi 30 novembre 2005 à 01:27:16 | Comment saisir une touche durant l'execution d'une boucle sans metre en "pause" celle ci en C

thetoy

Bonjour, c'est ici mon premier message, je suis débutant en programmation et fait du C ;), désolé si la question a déja été posé, je ne la retrouve plus :(

Donc voici mon problème, j'ai une boucle et je souhaite pouvoir y inséré une valeur sans que le programme ce mete en "pause" ...
Voici un exemple pour illustré ma question ;)

A=0
for (i=0;i<100;i++){
Sleep(100);
printf("i est egale a %d et A est egale a %d \n",i,A);
// A est un chiffre que l'on entre au clavier, mais l'ordi n'attend pas qu'on la tappe pour continué la boucle, ni que l'on attent que l'utilisateur tappe entré donc pas de scanf ou getch
}

Je pose cette question car je bloque a cause de ca dans la programation de mon Snake ;)
Voila merci a tous ;)

mercredi 30 novembre 2005 à 09:37:16 | Re : Comment saisir une touche durant l'execution d'une boucle sans metre en "pause" celle ci en C

gcorbineau

Membre Club

Salut,

Voila j'ai trouvé un bout de code qui pourra peut être t'aider:

 #include <stdio.h>
 #include <bios.h>
 #include <ctype.h>

   int key, modifiers;

   /* function 1 returns 0 until a key is pressed */
   while (bioskey(1) == 0);

   /* function 0 returns the key that is waiting */
   key = bioskey(0);

   /* use function 2 to determine if shift keys were used */
   modifiers = bioskey(2);
   if (modifiers)
   {
      printf("[");
      if (modifiers & RIGHT) printf("RIGHT");
      if (modifiers & LEFT)  printf("LEFT");
      if (modifiers & CTRL)  printf("CTRL");
      if (modifiers & ALT)   printf("ALT");
      printf("]");
   }
   /* print out the character read */
   if (isalnum(key & 0xFF))
      printf("'%c'\n", key);
   else
      printf("%#02x\n", key);


A+

mercredi 30 novembre 2005 à 15:29:17 | Re : Comment saisir une touche durant l'execution d'une boucle sans metre en "pause" celle ci en C

jean84

sinon tu peut utiliser un

while ( kbinit() != 27 )  // 27 touche "echap"
{
    char touche = getch();
    printf("La touche presse est %c.\n", touche);
}

en theorie sa doit fonctionner car je m'en servais pour une autre appli donc...
peut etre faudra modifier mais il me semble que c'est sa...
tiens moi au courant !

"Avant même de fonctionner, tout programme est déjà obsolète."
jeudi 1 décembre 2005 à 12:04:48 | Re : Comment saisir une touche durant l'execution d'une boucle sans metre en "pause" celle ci en C

jean84

Réponse acceptée !
Alors j'ai regarde mes codes hier soir et je me suis appercu que j'avais marquer une grosse c.........  .... heu..... disons betise....

C'etait bien kbinit() qu'il faut utiliser mais pas comme je l'ai monter au dessus...

/* Debut du code */
char touche;

/* Boucle infini du jeu, met ton propre code a la place*/
while ( 1 )
{
    if ( kbinit() )  // si une touche est presse
    {
       touche = getch();  // on recupere la touche transmise a kbinit()
    }
    /* Place ici ton code pour faire avancer ton serpent ..... */
}
/* Fin du code */ 


Le fonctionnement set simple. Tant qu'aucune touche n'est presse, la boucle continue sans rien demander. Si tu appuie sur un touche, a ce moment tu rentre dans le if et la tu fait ton traitement en fonction de l'action ( monter, descendre, bref tu vois quoi .... )
En esperant que sa te serve ....

@++ et bon code !

"Avant même de fonctionner, tout programme est déjà obsolète."
jeudi 1 décembre 2005 à 12:08:18 | Re : Comment saisir une touche durant l'execution d'une boucle sans metre en "pause" celle ci en C

jean84

a noter que le getch() sera non bloquant car il ira prendre la valeur transmise par kbinit()... donc tout bon ;-)

"Avant même de fonctionner, tout programme est déjà obsolète."
mardi 6 décembre 2005 à 16:32:36 | Re : Comment saisir une touche durant l'execution d'une boucle sans metre en "pause" celle ci en C

thetoy

Réponse acceptée !
merci jean84 mon nibble tourne :D, c'etait ca enfin presque :)

c'est kbhit() au lieu de kbinit()


lundi 19 décembre 2005 à 14:29:41 | Re : Comment saisir une touche durant l'execution d'une boucle sans metre en "pause" celle ci en C

jean84

lol.. j'ai pas du bien regarder alors ... desole ... Je suis content d'avoir pu te donner un coup de main ... n'oublie de poster le source de jeux !!! @++

"Avant même de fonctionner, tout programme est déjà obsolète."


Cette discussion est classée dans : boucle, question, touche, pause, saisir


Répondre à ce message

Sujets en rapport avec ce message

Intercepter la touche ESC [ par mindark ] BonjourVoila, j'ai un programme qui execute une boucle d'environ 5 mins. Et je voudrais que cette boucle soit executee plusieurs fois, jusqu'a ce que detecter la pression d'une touche [ par ben01n ] salut toutle mondej'ai un prog qui effectue une boucle infinie avec des instructions à l'interieurmon problème est que je voudrais pouvoir appuyer sur Question sur les WM_* [ par guitoulefoux ] Bonjour,J'ai une petite question.J'ai un code de se type:(en super simplifié)[...]switch(mssg) { case WM_KEYDOWN: if(Param == VK_UP) { mes InvalidateRect en boucle. [ par tintin72 ] Bonjour,Je voudrais envoyer plusieurs fois le message InvalidateRect lors de l'appuie sur une touche du clavier (case WM_KEYDOWN)  pour provoquer à ch question sur une saisie pendant un temp [ par Battousai ] salut tout le monde,ma question cette fois est comment faire une saisie sur un interval de temp t connu d'avance sachant qu'il faut arreter cette sais Saisir une touche automatiquement [ par salutbonjour ] Bonjour a tous,Je suis un debutent en C++ (avec Dev C++)Je ne suis pas rendu tres loin. J'aimerais faire un jeu video tres basique;Mon probleme : Je n probleme avec dev c++ [ par val13190 ] Bonjour,Voila j'ai crée un petit programme en C, grâce à la SDL et à dev-c++.Mais, j'ai un problème dans mon code, j'essaye de mettre mon programme en Sortir d'une boucle dès qu'une touche est pressée [ par admax74 ] Bonjour,J'ai dans mon programme une boucle dont j'aimerais sortir dès que la touche espace par exemple est pressée.ainsi:code:do{// ma boucle Probleme pour kbhit [ par ChAnGy59 ] Bonjour a tous,Voila mon petit sousis, j'aimerai pouvoir sortir d'une boucle while en "frappant" la touche Q, a l'aide de kbhit. Je voulais savoir si Détection Touche [ par ChAnGy59 ] Bonjour à tous, dans le cadre d'un projet j'ai quelque question a vous poser car j'ai essayé beaucoup de chose , malheuresement sans résultat. Voici m


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales