控制台(显示屏)中的双缓冲?

时间:2011-01-21 01:33:00

标签: c++ c console

我正在尝试创建一个控制台乒乓球游戏,但遇到了以下问题。 我有以下内容:

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 个答案:

答案 0 :(得分:7)

有curses / ncurses库,它要求您在显示任何内容之前刷新屏幕。它在平台支持方面非常普遍。