我试图制作游戏PacMan的变种,我遇到了一些问题,其中一个不知道如何打印整个地图和pacman移动没有屏幕闪烁。 这就是我为打印所做的事情:
while(commmand) {
system("CLS");
display();
if(kbhit()) {
command = getch();
move(command);
}
move(command);
printf("SCORE: %d",score);
}
命令,显示和移动是我的功能,它们正常工作。没有屏幕闪烁,有没有其他方法可以做到这一点?
答案 0 :(得分:1)
是的。你想看double-buffering(或多缓冲)。一般的想法是,你有两个(或更多缓冲区),而一个缓冲区,比如缓冲区A,显示在屏幕上,你正在预先形成你的所有计算(即物理,运动,四个鬼的AI)和绘图到第二个缓冲区,比如缓冲区B.完成所有计算后,我们交换A和B,以便显示缓冲区B,并使用缓冲区A进行计算。
OpenGL原生支持双缓冲,请参阅this tutorial。我从未使用过DirectX,所以我不能谈论它,但如果它没有办法进行双缓冲,我会感到惊讶。