Portál AbcLinuxu, 12. května 2025 06:56

Dotaz: C++ sleep

21.12.2010 16:23 krb | blog: herni_blog
C++ sleep
Přečteno: 522×
Odpovědět | Admin

Dobrý den, psal jsem to do předchozího dotazu ale jelikož byl vyřešen tak si toho nikdo nevšímá. Takže, píšu program v C++. Vytvořil jsem funkci timer(), která odpočítává 30 vteřin a pak něco spustí atd. A chci do programu udělat, aby program napsal možnosti a uživatel měl právě 30 vteřin na to, aby se rozhodnul. Chtěl bych aby to vypadalo asi nějak takhle:

 

0:30
"Ano nebo ne? 
1) ano
2) ne
>>

Ale program místo toho nejdřív odpočítá a pak napíše ano nebo ne atd., nebo to všecko napíše a v pohodě odpočítává ale kurzorem najede na to odpočítávání a to já nechci, já potřebuju aby kurzorem byl za tím  >> . Děkuji za rady.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.12.2010 16:49 mato
Rozbalit Rozbalit vše Re: C++ sleep
Odpovědět | | Sbalit | Link | Blokovat | Admin

nevidel som tvoje predchadzajuce otazky, ale podla tvojho popisu to funguje spravne, len kurzor nevypisuje na spravne miesto - co je samozrejme, kedze kurzor zostane o jednu poziciu doprava od posledneho write-u..

 

bud pouzijes nieco ako gotoxy z ncurses alebo pouzi escape characters pre terminal, napr:


#    \033[<NUM>G   move to column <NUM> (linux console, xterm, not vt100)
#    \033[<NUM>C   move <NUM> columns forward but only upto last column
#    \033[<NUM>D   move <NUM> columns backward but only upto first column
#    \033[<NUM>A   move <NUM> rows up
#    \033[<NUM>B   move <NUM> rows down

co by mohlo vyzerat napriklad:

 

/* timer */
fprintf (stdout, "\033[1B 00:30\n");

/* ans */
fprintf (stdout, "\033[4B?: \n");

v principe takto .. s tym ze budes ratat, kde si naposledy tlacil znak pre odpoved a kde timer

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.