Wpis z mikrobloga

Mirki i Mirabelki z #programowanie #cpp
mam zrobić taki mały projekcik na zajęcia na #studbaza i chcę zrobić jakiegoś rogalika w konsoli.
I mam taki problem, że w moim takim testowym programiku tekst w konsoli smuży. Czytałem w necie, że w konsoli tak będzie zawsze i trzeba robić w swoim okienku. Kolega twierdzi, że zamiast wypisywać wszystko za każdym razem można nadpisywać. Czy i jak to można zrobić?
Bo np taki winrogue nie smuży a jest w konsoli z tego co widzę.
Tutaj mój kod
  • 8
  • Odpowiedz
@BloodDeath94: Poprostu wypisywanie znaków na konsolę jest wolne i nie wyrabia się program z pisaniem.
Możesz spróbować zaimplementować podwójne buforowanie (double buffering). Np. przekierować standardowe wyjście na jakąś tablicę w rozmiarze ekranu a przy refreshu tą tablicę przekopiowywać na ekran.
Albo np. możesz odświeżać ekran tylko wtedy gdy wykonasz jakąś rzecz wymagającą odświeżenia - wtedy będziesz miał mniej odświeżeń i nie zauważysz spowolnienia.
  • Odpowiedz
@BloodDeath94:
1. Użyj ncurses. No chyba, że jest jawnie powiedziane, że nie możesz.
2. Jeśli używasz std::endl tylko po to, żeby złamać linię, to robisz to źle. Oto co robi std::endl:

Inserts a newline character into the output sequence os and flushes it as if by calling os.put(os.widen('\n')) followed by os.flush().

Użyj \n w sytuacji, gdy tylko chcesz złamać linię.
  • Odpowiedz