0

我正在尝试制作 PacMan 游戏的变体,但遇到了一些问题,其中一个问题是不知道如何打印整个地图并且 pacman 在屏幕不闪烁的情况下移动。这就是我为打印所做的:

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

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

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

4

1 回答 1

1

就在这里。您想查看双缓冲(或多缓冲)。一般的想法是,您有两个(或更多缓冲区),而一个缓冲区(例如缓冲区 A)显示在屏幕上,您正在执行所有计算(即四个幽灵的物理、运动、AI)并绘制到第二个缓冲区,比如缓冲区 B。当所有计算完成后,我们交换 A 和 B,以便显示缓冲区 B,然后使用缓冲区 A 进行计算。

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

于 2015-11-29T15:57:30.527 回答