Re: A small game
On Sep 17, 4:01 am, tony_in_da...@yahoo.co.uk wrote:
On Sep 16, 4:12 pm, arnuld <sunr...@invalid.address> wrote:
Here is what I finished with. Any advice is appreciated :)
std::cout << std::endl << std::endl;
std::cout << "\t*Add 10 to that number\n";
sleep(think_time);
std::endl writes a newline ('\n') and flushes the output
stream. You want to do this when you want to be sure the
message will be displayed on the screen before the next
command runs. So, you should use endl rather than \n before
calling sleep (or you may not see the message on all
platforms), and you should not use endl for each of the couple
prefixed newlines (or you'll get into a bad habit that will
make your larger programs write their output slowly). Same
principles can be applied in many other places in your
program.
You should use endl until you understand buffering issues.
Given the level of the posting, he's far from that yet. Also,
by default, std::cin and std::cout are tied, so any attempt to
read on std::cin will flush the buffer on std::cout. (A simple
but useful general rule might be to use endl at the end of an
output statement, but '\n' when more text immediately follows.
So he might write the above:
std::cout << "\n\n\t*Add 10 to that number" << std::endl ;
.. Which comes out to what you recommend, in this case, but
the rule doesn't require any understanding of buffering.)
Also, expecting to be able to resume reading from cin after a
control-D may not be portable.
I'd consider it an error if it worked. Without a
std::cin.clear(), the standard guarantees that it won't work;
with an std::cin.clear(), it's a QoI issue, but it really
shouldn't work either.
I suggest you just ask the user to press "Enter", and
read/ignore characters until you receive a '\n'.
Much better design.
That has other small benefits, like you can test your program
ala "( echo; echo 22 ) | ./program".
He really should write a number of scripts to automate testing
of the program.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34