【问题标题】:Double buffering in the console (display)?控制台(显示)中的双缓冲?
【发布时间】:2011-01-21 01:32:59
【问题描述】:

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

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 次并且屏幕内容永远不会真正改变。然而它时不时地闪烁。我怀疑这是因为输出在完全绘制之前显示在屏幕上。有没有解决的办法?例如,在所有字符都绘制到屏幕上之前不向用户显示任何内容?

谢谢

【问题讨论】:

  • 同样,C++ 对控制台输出的作用很小(cout 甚至不需要真正进入控制台,这只是惯例)。什么平台?研究 SDL 或 SFML 等现成的简单引擎可能会更好。
  • @GMan 我通常使用 OpenGL 和/或 SDL 制作游戏,我只是为了好玩和新颖而尝试这个。我正在尝试针对 Windows 和 Linux

标签: c++ c console


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    相关资源
    最近更新 更多