Czyszczenie częśći ekranu
Ostatnio zmodyfikowano 2010-10-27 19:41
huberthx Temat założony przez niniejszego użytkownika |
Czyszczenie częśći ekranu » 2010-10-26 22:11:23 Witam Mój problem polega na tymże nie wiem jak wyczyścić tylko część ekranu w aplikacji konsolowej. Kod pochodzi z kursu c++. #include <time.h> #include <iostream>
void czekaj( int sekundy ) { clock_t koniec_czekania; koniec_czekania = clock() + sekundy * CLOCKS_PER_SEC; while( clock() < koniec_czekania ) { } }
int main() { std::cout << "Program zamknie sie za:" << std::endl; for( int i = 5; i > 0; i-- ) { std::cout << i << std::endl; czekaj( 1 ); } return 0; }
Jeżeli nie obejdzie się bez jakiejś dodatkowej biblioteki to prosiłbym o to aby ta biblioteka była wspierana przez system linux ponieważ na nim programuję Za pomoc dziękuję |
|
ison |
» 2010-10-26 22:31:32 for( int i = 5; i > 0; i-- ) { std::cout << i; czekaj( 1 ); std::cout << "\r"; }
nie wiem jak to jest z linuxowym terminalem ale u mnie na windowsie śmiga jak należy |
|
huberthx Temat założony przez niniejszego użytkownika |
» 2010-10-26 23:04:23 Dziękuję za pomoc. Twój sposób jest dobry ale kod musiałem przerobić na taki żeby działał: #include <iostream> #include <time.h>
void czekaj( int sekundy ) { clock_t koniec_czekania; koniec_czekania = clock() +( sekundy * CLOCKS_PER_SEC ) / 2; while( clock() < koniec_czekania ) { std::cout << "\r"; } }
int main() { std::cout << "Program zamknie sie za:" << std::endl; for( int i = 5; i > 0; i-- ) { std::cout << i; czekaj( 1 ); } return 0; }
Mimo rozwiązanie tego pojedynczego problemu prosiłbym, że jeśli zna ktoś jeszcze jakiś inny sposób czyszczenia części ekranu to prosiłbym o podanie. |
|
malan |
» 2010-10-27 12:16:17 Ewentualnie możesz jeszcze zrobić tak: for( int i = 5; i > 0; i-- ) { ddt::console::clrsrc(); std::cout << "Program zamknie sie za:" << std::endl; std::cout << i << std::endl; czekaj( 1 ); } |
|
ison |
» 2010-10-27 16:13:38 @up powodzenia przy kompilacji programu z użyciem biblioteki windows.h na Linuksie :)
//edit apropo backspace'a teraz dopiero zauważyłem że machnąłem się w 1 znaku, \b a nie \r ;P
czyli tak powinien wyglądać kawałek kodu:
for( int i = 5; i > 0; i-- ) { std::cout << i; czekaj( 1 ); std::cout << "\b"; }
|
|
malan |
» 2010-10-27 19:41:22 Nie doczytałem, że kolega programuje na Linuksie. Jednak to żaden problem- Ncurses lub każda inna biblioteka wieloplatformowa posiadająca funkcję czyszczącą ekran konsoli.
Aczkolwiek Twoje rozwiązanie nie wymaga tyle zachodu. |
|
« 1 » |