Probleme avec doskey et buffer...
Alors en fait, je suis debutant (j'aprend depuis septembre le C)
et j'ai fais un petit jeu (simon, en mode console).
Il a une faille : on peut se servir de l'historique (doskey) pour retrouver se qu'oin a tapé avant.
J'avais une solution: executer dans la fenetre
doskey /LISTSIZE=1
ce qui permet de memoriser qu'une seule commande dans l'historique.
j'utilise devC++ donc j'ai voulu faire
system("doskey /LISTSIZE=1");
mais pas moyen, ca marche pas.
Si quelqu'un a une idée..
deuxieme probleme:
pour mes menu j'utilise getch().
Quand j'ai un menu apres une musique ou quelquechose qui prend du temps,
getch() prend la touche qui a ete tapée pednant la musique.
donc j'aimerais pouvoir vider le tempon juste avant mon menu.
mais ca ne marche pas avec fflush(stdin);
remarque : les caracteres entree avec getch() ne sont pas memorisé dans l'historique, je suppose donc que se n'est pas le meme tempon.....
je confond tout?
eclairez moi SVP, je suis debutant ;)
Re: Probleme avec doskey et buffer...
Citation:
Envoyé par shaiton
Alors en fait, je suis debutant (j'aprend depuis septembre le C)
et j'ai fais un petit jeu (simon, en mode console).
'débutant' et 'jeux' sont des mots qui vont rarement ensemble...
Citation:
Il a une faille : on peut se servir de l'historique (doskey) pour retrouver se qu'on a tapé avant.
Sous MS-DOS, oui, peut être... Si ça gène, il suffit de ne pas installer doskey. Voir l'autoexec.bat...
Citation:
deuxieme probleme:
pour mes menu j'utilise getch().
Ce qui est une façon radicale (mais non portable) de régler le problème de doskey...
Citation:
Quand j'ai un menu apres une musique ou quelquechose qui prend du temps,
getch() prend la touche qui a été tapée pendant la musique.
Normal, c'est indépendant (le traitement est fait sous interruption).
Citation:
donc j'aimerais pouvoir vider le tempon juste avant mon menu.
mais ca ne marche pas avec fflush(stdin);
Evidemment, et pour 2 raisons.
- fflush() n'est définit que pour les flux sortants
- getch() n'a rien à voir avec stdin. C'est une fonction de gestion directe du clavier.
Citation:
remarque : les caracteres entree avec getch() ne sont pas memorisé dans l'historique, je suppose donc que se n'est pas le meme tempon.....
'tampon'. Oui, absolument. Il est d'alleurs fortement recommandé de faire des choix clairs et définitifs.
- Soit tu utilises les entrées standard (stdin) et les fonctions de <stdio.h> qui vont bien (fgetc(), fgets() etc.)
- soit tu utilises la gestion directe du clavier avec les fonctions de <conio.h> comme kbhit(), getch() etc.
Mélanger les deux est extrèmement risqué.