faire un truc du genre "appuyer sur <entrée> pour continuer" - Ada - Programmation
Marsh Posté le 09-11-2005 à 00:47:28
ReplyMarsh Posté le 09-11-2005 à 00:51:36
erwan83 a écrit : c'est en quel langage ??? |
T'as regardé le nom de la sous cat
Marsh Posté le 26-11-2005 à 17:53:38
c'est vrai que c'est une bonne idée, ça m'interesse aussi de savoir le faire! J'ai même essayé mais j'ai toujours pas trouvé l'astuce, tout ce que j'arrive a faire c'est "appuyer sur <esapce> puis sur <entrer> pour continuer". C'est pas mal aussi mais c'est pas encore ce que je cherche, et ce que tu cherche aussi...
Marsh Posté le 27-11-2005 à 01:20:06
mach-1 a écrit : c'est vrai que c'est une bonne idée, ça m'interesse aussi de savoir le faire! J'ai même essayé mais j'ai toujours pas trouvé l'astuce, tout ce que j'arrive a faire c'est "appuyer sur <esapce> puis sur <entrer> pour continuer". C'est pas mal aussi mais c'est pas encore ce que je cherche, et ce que tu cherche aussi... |
En language C et donc C++ par la meme occasion il ne faut pas utiliser un "scanf" mais un "_getch()"
Le scanf enregistre la touche puis attend lapui sur la touche entrée pour valider ta touche ! Le getch lui sen fou de sa ! et des que tu appui il a enregistrer et il passe a l'instruction suivante !
(je suis en BTS IRIST et je fait sa 24h/24h)
Marsh Posté le 27-11-2005 à 10:42:08
Ok pour le C, mais la sous-catégorie de ce sujet ce n'est pas le langage C mais le langage ADA. Je ne sais pas s'il existe en ADA une fonction comme celle que tu utilises en langage C, en tout cas si elle existe je la connais pas...
Marsh Posté le 27-11-2005 à 18:58:01
Désolé, je ne connais pas la réponse, mais la question me fait penser à une petite série de messages d'erreur humoristiques qui feront peut-être rire d'autres personnes que moi, et qui feront un "up" pour cette question intéressante.
Code :
|
Marsh Posté le 28-11-2005 à 16:25:01
Il me semble pourtant que ce n'est pas tres compliqué non !!???
Tu fais un get_line(..) d'un string et puis voilà..
Marsh Posté le 28-11-2005 à 19:13:41
Ben je pense pas que ce soit ça la solution, nous ce qu'on cherche c'est par exemple : disons dans un jeu de lancé de dés, faire que le lancé se fasse quand on appui sur ENTRER, pas quand on rentre une phrase avant. Donc je pense pas que le get_line puisse nous aider, parce que le get_line va nous demander d'écrire qqc d'autre qu'ENTRER.
Marsh Posté le 02-12-2005 à 16:56:20
mach-1 a écrit : Ben je pense pas que ce soit ça la solution, nous ce qu'on cherche c'est par exemple : disons dans un jeu de lancé de dés, faire que le lancé se fasse quand on appui sur ENTRER, pas quand on rentre une phrase avant. Donc je pense pas que le get_line puisse nous aider, parce que le get_line va nous demander d'écrire qqc d'autre qu'ENTRER. |
Code :
|
-- Ca t'affichera ton lancé même si tu rentre un string vide ! (il me semble)
Marsh Posté le 14-12-2005 à 00:02:04
Pourquoi pas tout simplement :
System("pause" ) ;
Ou alors jai pas tout compris ^^ !
++
Marsh Posté le 14-12-2005 à 13:50:54
ouai effectivement, t'as pas tout compris...
Regarde la cat où on est....
Marsh Posté le 14-12-2005 à 14:10:24
au fait c'est tout con...
Après chaque entrée clavier que tu fais il faut vider le tampon d'entrée avec l'instruction Skip_Line;
Si tu le fais à chaque fois à la fin de ton programme tu pourras simplement faire
Put_Line("Appuyez sur <Entree> pour continuer" );
Skip_Line;
ce qui va afficher ton message puis lorsqu'il tentera de vider le tampon deja vide il attendra une entrée.
Marsh Posté le 14-12-2005 à 15:02:49
Faux:
Skip_line saute une ligne en lecture.
Si il y a qqch ds le tampon, ça va le vider et passer directe à la suite (donc pas de pause)
Il faut explicitement attendre qqch au clavier, donc get_line, avec au préalable, éventuellement un set_col(standard_input,1) qui est mieux qu'un skip_line...(voir la doc)
Marsh Posté le 14-12-2005 à 18:24:16
apprentitux a écrit : Faux: |
Désolé, j'ai peut-être pas été très clair la 1ère fois :
En effet comme tu dis Skip_Line vide le tampon et passe à la suite... sauf que si tu vides le tampon après chaque lecture (avec Get et non Get_Line qui sauf erreur existe pas), ton tampon sera vide au moment de la fin de ton programme... donc un nouveau Skip_Line attendra justement l'entrée d'une valeur vu qu'il n'a rien a vider... ce qui aura l'effet désiré...
Si t'es toujours pas convaincu c'est que tout mon livre de cours sur l'ada se trompe tout comme mon prof de prog qui programme en ada depuis les tous premiers standards de ce langage mais je te crois volontiers comme quoi il y aurait d'autres manières de faire... je trouve juste que le Skip_Line avec un tampon vide fonctionne bien et est très simple
Marsh Posté le 15-12-2005 à 15:42:39
BlackWolf a écrit : Désolé, j'ai peut-être pas été très clair la 1ère fois : |
Il me semble que (cf Ada.Text_Io.ads) :
Code :
|
Existe bel et bien (sauf erreur de ma part)
Pour le reste, je veut bien, mais comment est tu sur qu'au moment ou tu fais une pause, le tampon est vide ??
En faisant après chaque E/S un set_col(standard_input,1) tu mets le numero de colonne à 1, càd que si cette valeur est > 1, ça la met à 1 (saute une ligne en lecture) et c'est déjà 1, ça ne fait rien, alors que le skip_line saute obligatoirement une ligne en lecture.
Là tu as l'assurance d'avoir toujours un tampon vide après tes E/S, et là tu peut faire ton skip_line.
Une autre methode serait peut-être de faire comme ça (à tester) :
procedure pause is
set_col(standard_input,1);
skip_line;
end pause;
Marsh Posté le 15-12-2005 à 20:00:12
ouais c'est vrai que vu comme ça...
En ce qui me concerne, après chaque entrée j'effectue un skip_line (toujours pratique si il y a eu une erreur (style si l'utilisateur t'as entré un nombre suivi de caractère, il lira le nombre jusqu'au 1er caractère puis laissera ceux-ci dans le tampon... ce qui va planter au prochain get) ) donc au momenet ou je veux faire ma pause le tampon est généralement toujours vide... donc normalement ça devrait jamais trop poser de problème mais il est clair qu'il est toujours possible de trouver des situations ou ça peut déconner donc c'est toujours bien d'avoir plusieurs possibilités sous la main
Au temps pour moi pour le Get_Line
Marsh Posté le 16-12-2005 à 16:14:40
Je crois qu'ça merde aussi quand tu get_line un string en mettant le nombre max de caractère, du genre:
s : string(1..10);
...
puis tu get_line exactement 10 caractères.
A ce moment là, le 'fin de ligne' reste dans le tampon...
Marsh Posté le 17-12-2005 à 16:07:44
-----------------------------------------------------------------------
procedure Press_Key is
C : Character;
begin
new_line(2);
Put("Appuyez sur une touche pour continuer..." );
get_immediate(c);
new_line(2);
end Press_Key;
-----------------------------------------------------------------------
si tu veux que ça ne marche que pour la touche entrée, rajoute une boucle/test.
Marsh Posté le 05-11-2005 à 17:47:19
voila j'aimerais pouvoir mettre cette phrase "appuyer sur <entrée> pour continuer"
et ainsi quand l'utilisateur appuie sur entrée le programme continue...