faire un truc du genre "appuyer sur <entrée> pour continuer"

faire un truc du genre "appuyer sur <entrée> pour continuer" - Ada - Programmation

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...

Reply

Marsh Posté le 05-11-2005 à 17:47:19   

Reply

Marsh Posté le 07-11-2005 à 14:17:59    

C'est une très bonne idée

Reply

Marsh Posté le 09-11-2005 à 00:47:28    

c'est en quel langage ???
parce qu'en VB c'est facile...

Reply

Marsh 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 [:petrus dei]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

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...

Reply

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 !  :jap:  
 
(je suis en BTS IRIST et je fait sa 24h/24h) :cry:


Message édité par general grevious le 27-11-2005 à 01:21:31
Reply

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...

Reply

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 :
  1. Smash forehead on keyboard to continue.
  2. Enter any 17-digit prime number to continue.
  3. Press any key to continue or any other key to quit.
  4. Press any key... no, no, no, NOT THAT ONE!
  5. Press Ctrl-Alt-Del now for IQ test.
  6. Close your eyes and press escape three times.
  7. Bad command or file name! Go stand in the corner.
  8. This will end your Windows session. Do you want to play another game?
  9. Keyboard not attached. Press F1 to continue.
  10. COFFEE.SYS missing... Insert cup and press any key.
  11. Error reading FAT record: Try the SKINNY one? (Y/N)
  12. WinErr 547: LPT1 not found. Press any key and use PENCIL & PAPER.
  13. User Error: Replace user (Y/N).
  14. Windows VirusScan 1.0 - "Linux found: Remove it? (Y/Y)"
  15. Backup not found: (A)bort (R)etry (P)anic

Reply

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à..

Reply

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.

Reply

Marsh Posté le 28-11-2005 à 19:13:41   

Reply

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.


 
 :pfff:  

Code :
  1. procedure exemple is
  2.    lg : integer;
  3.    gen : generator;
  4.    tempo : string(1..longueur_qqn); -- peut être 1..0 par exemple
  5. begin
  6.   -- éventuellement : set_col(standard_input,1);
  7.    get_line(tempo,lg);
  8.    put_line("résultat du lancé :" & résult_dé'image(random(gen)));


 
   -- Ca t'affichera ton lancé même si tu rentre un string vide ! (il me semble)

Reply

Marsh Posté le 14-12-2005 à 00:02:04    

Pourquoi pas tout simplement :
 
System("pause" ) ;
 
Ou alors jai pas tout compris ^^ !
 
++

Reply

Marsh Posté le 14-12-2005 à 13:50:54    

ouai effectivement, t'as pas tout compris...
Regarde la cat où on est....

Reply

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.

Reply

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)

Reply

Marsh Posté le 14-12-2005 à 18:24:16    

apprentitux a écrit :

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)


 
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 :)

Message cité 1 fois
Message édité par BlackWolf le 14-12-2005 à 18:26:02
Reply

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 :
......(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é...


 
Il me semble que (cf Ada.Text_Io.ads) :

Code :
  1. procedure Get_Line(File : in  File_Type;
  2.                            Item : out String;
  3.                            Last : out Natural);


 
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;

Reply

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 :)

Reply

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...

Reply

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.


Message édité par colween le 17-12-2005 à 16:08:27
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed