Двойная буферизация в консоли (дисплей)? - PullRequest
2 голосов
/ 21 января 2011

Я пытаюсь создать консольную игру в понг, но столкнулся со следующей проблемой.У меня есть следующее:

int main()
{
    while(1)
    {
        clearScreen();

        std::stringstream sstr;
        for(int i = 0; i < 20; ++i)
        {
            sstr << "Mooooooo \n";
        }
        printf(sstr.str().c_str());
        restThread(50);
    }
    return 0;
}

Вывод, который я ожидаю, состоит в том, что Moo будет записан 20 раз, а содержимое экрана никогда не изменится.Однако время от времени мерцает.Я подозреваю, что это потому, что вывод отображается на экране, прежде чем он полностью отрисован.Это можно обойти?например, ничего не показывать пользователю, пока все символы не будут нарисованы на экране?

Спасибо

1 Ответ

7 голосов
/ 21 января 2011

Есть библиотека curses / ncurses , которая требует обновления экрана перед отображением чего-либо. Это довольно повсеместно с точки зрения поддержки платформы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...