如何在没有屏幕闪烁的情况下进行while循环

时间:2015-11-29 15:43:58

标签: c pacman display

我试图制作游戏PacMan的变种,我遇到了一些问题,其中一个不知道如何打印整个地图和pacman移动没有屏幕闪烁。 这就是我为打印所做的事情:

while(commmand) {
    system("CLS");
    display();
    if(kbhit()) {
        command = getch();
        move(command);
    }

    move(command);
    printf("SCORE: %d",score);
}

命令,显示和移动是我的功能,它们正常工作。没有屏幕闪烁,有没有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

是的。你想看double-buffering(或多缓冲)。一般的想法是,你有两个(或更多缓冲区),而一个缓冲区,比如缓冲区A,显示在屏幕上,你正在预先形成你的所有计算(即物理,运动,四个鬼的AI)和绘图到第二个缓冲区,比如缓冲区B.完成所有计算后,我们交换A和B,以便显示缓冲区B,并使用缓冲区A进行计算。

OpenGL原生支持双缓冲,请参阅this tutorial。我从未使用过DirectX,所以我不能谈论它,但如果它没有办法进行双缓冲,我会感到惊讶。