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

Résolu
thetoy Messages postés 2 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 6 décembre 2005 - 30 nov. 2005 à 01:27
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009 - 19 déc. 2005 à 14:29
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 ;)

6 réponses

cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
1 déc. 2005 à 12:04
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."
3
thetoy Messages postés 2 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 6 décembre 2005
6 déc. 2005 à 16:32
merci jean84 mon nibble tourne :D, c'etait ca enfin presque :)



c'est kbhit() au lieu de kbinit()
3
gcorbineau Messages postés 143 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 octobre 2006
30 nov. 2005 à 09:37
Salut,

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

#include <stdio.h>
#include
#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+
0
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
30 nov. 2005 à 15:29
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."
0

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

Posez votre question
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
1 déc. 2005 à 12:08
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."
0
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
19 déc. 2005 à 14:29
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."
0