我正在尝试制作 PacMan 游戏的变体,但遇到了一些问题,其中之一是不知道如何打印整个 map ,并且 pacman 移动时屏幕不会闪烁。 这就是我打印时所做的:
while(commmand) {
system("CLS");
display();
if(kbhit()) {
command = getch();
move(command);
}
move(command);
printf("SCORE: %d",score);
}
命令、显示、移动是我的功能,它们工作正常。有没有其他方法可以做到这一点而不使屏幕闪烁?
最佳答案
是的,有。您想看double-buffering (或多缓冲)。总体思路是,您有两个(或更多缓冲区),而一个缓冲区(例如缓冲区 A)显示在屏幕上,您正在执行所有计算(即物理、运动、四个幽灵的 AI)并绘制到第二个缓冲区,例如缓冲区 B。当所有计算完成后,我们交换 A 和 B,以便显示缓冲区 B,并使用缓冲区 A 进行计算。
OpenGL 本身支持双缓冲,请参阅 this tutorial 。我从未使用过 DirectX,所以我无法谈论它,但如果它没有办法进行双缓冲,我会感到惊讶。
关于c - 如何制作一个while循环而不让屏幕闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33984617/