10 réponses
Bonjour,
J'arrive après la bataille mais tant pis.
b.driss04 tu dis que tu ne désires pas que ton programme reste bloqué en attente d'une touche.
Zombi te propose un code qui ne bloque pas. Evidemment, il doit manquer une boucle pour revenir de temps en temps verifier les touches, mais son code fait autre chose.
Et finalement tu codes while(!kbhit()) ; // touche non disponible
Pour moi un tel code reste bloqué tant que tu n'as pas appuyé sur une touche. Donc tu reviens, non pas a un scanf, mais a un getch. Enfin il me semble. Certes je propose ca comme ca, je n'ai pas testé du tout.
Amicalement
J'arrive après la bataille mais tant pis.
b.driss04 tu dis que tu ne désires pas que ton programme reste bloqué en attente d'une touche.
Zombi te propose un code qui ne bloque pas. Evidemment, il doit manquer une boucle pour revenir de temps en temps verifier les touches, mais son code fait autre chose.
Et finalement tu codes while(!kbhit()) ; // touche non disponible
Pour moi un tel code reste bloqué tant que tu n'as pas appuyé sur une touche. Donc tu reviens, non pas a un scanf, mais a un getch. Enfin il me semble. Certes je propose ca comme ca, je n'ai pas testé du tout.
Amicalement
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
4 nov. 2007 à 22:53
4 nov. 2007 à 22:53
de quel interruption tu parle ?
re
merci mype
je ve que quand j'appuie sur 1e touche que mon programme effectue autre tache selon la touche sur laquelle j'appuie
et merci encore 1e fois
merci mype
je ve que quand j'appuie sur 1e touche que mon programme effectue autre tache selon la touche sur laquelle j'appuie
et merci encore 1e fois
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
4 nov. 2007 à 23:09
4 nov. 2007 à 23:09
pour sa faut utiliser un switch je pense
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
non je ve pas ke le programme attend que j'appuie sur 1e touche
si j'appuie pas il doit effectue 1e tache, et si j'appuie sur 1e touche il doit effectue 1e autre tache selon la touche
le prob cé que avec scanf tjrs le programme attend la saisie d'une caractere. cé ce que je ve pas
é merci
si j'appuie pas il doit effectue 1e tache, et si j'appuie sur 1e touche il doit effectue 1e autre tache selon la touche
le prob cé que avec scanf tjrs le programme attend la saisie d'une caractere. cé ce que je ve pas
é merci
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
4 nov. 2007 à 23:21
4 nov. 2007 à 23:21
dsl je comprend pas ce que tu veux faire... fait un cc de ton programme pour voir
par ex
lire(touche)
selon(touche)
{
touche=g serpent tourne a gauche
touche=d serpent tourne a droite
touche=h serpent tourne en haut
touche=b serpent tourne en bas
touche=e exit execution
autrement rien a faire
}
voila en bref la tache que je ve realiser
mé je ve ps que l'execution s'arrete et attendre la saisie de "touche"
merci
lire(touche)
selon(touche)
{
touche=g serpent tourne a gauche
touche=d serpent tourne a droite
touche=h serpent tourne en haut
touche=b serpent tourne en bas
touche=e exit execution
autrement rien a faire
}
voila en bref la tache que je ve realiser
mé je ve ps que l'execution s'arrete et attendre la saisie de "touche"
merci
Pour ça tu peux utiliser le kbhit(). Je répond un peu tard mais si quelqu'un lit ça, ça l'aidera aussi ^^
kbhit(), contrairement à scanf et getch , n'interrompt pas le programme, qui continue à s'exécuter.
Ca donnera un truc du genre :
main
{
...
appui_clavier=kbhit();
...
if (appui_clavier!=0) {
touche=getch();
switch (touche) {
case 'a' : blabla; break;
case 'b' : blabla; break;
}
}
...
...
}
kbhit() retourne un état 0 ou 1, mais pas forcément, c'est pour ça qu'on met != ( différent de ) 0 pour que si il nous retourne autre chose, on soit pas bloqués.
Ensuite, si une touche a étée appuyée ( test dans le if ), on fais une acquisition de la touche via le getch et on attribue sa valeur a une variable.
Pour finir on fait un switch, et on oublie pas de mettre ' ' pour dire que c'est un caractère. Je te laisse regarder dans une table ASCII les formulations pour les flèches de direction :)
kbhit(), contrairement à scanf et getch , n'interrompt pas le programme, qui continue à s'exécuter.
Ca donnera un truc du genre :
main
{
...
appui_clavier=kbhit();
...
if (appui_clavier!=0) {
touche=getch();
switch (touche) {
case 'a' : blabla; break;
case 'b' : blabla; break;
}
}
...
...
}
kbhit() retourne un état 0 ou 1, mais pas forcément, c'est pour ça qu'on met != ( différent de ) 0 pour que si il nous retourne autre chose, on soit pas bloqués.
Ensuite, si une touche a étée appuyée ( test dans le if ), on fais une acquisition de la touche via le getch et on attribue sa valeur a une variable.
Pour finir on fait un switch, et on oublie pas de mettre ' ' pour dire que c'est un caractère. Je te laisse regarder dans une table ASCII les formulations pour les flèches de direction :)
b.driss04
Messages postés
16
Date d'inscription
dimanche 4 novembre 2007
Statut
Membre
Dernière intervention
8 mai 2013
25 nov. 2007 à 22:10
25 nov. 2007 à 22:10
merci zombi je crois que ca va aller
merci infiniment
merci infiniment
b.driss04
Messages postés
16
Date d'inscription
dimanche 4 novembre 2007
Statut
Membre
Dernière intervention
8 mai 2013
29 nov. 2007 à 22:10
29 nov. 2007 à 22:10
la solution est de la forme:
while(!kbhit()) ; // touche non disponible
touche=getch();
swich(touche)
{
case 'q': exit(0);// par ex
.
.
.
}
while(!kbhit()) ; // touche non disponible
touche=getch();
swich(touche)
{
case 'q': exit(0);// par ex
.
.
.
}