c - 如何制作一个while循环而不让屏幕闪烁

标签 c pacman display

我正在尝试制作 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/

相关文章:

c++ - VIVADO HLS 中的综合错误

c - MPI-- 无限发送和接收

Java 游戏编程第 1 部分 : Smooth Movement

Java Swing : Graphic component only appears in top-left corner zone

html - 事件前的下拉显示

css - 让 Monaco Editor 填充页面的其余部分(跨浏览器)

C——基本结构问题

c - 内存映射 IO 和 GCC 优化

javascript - 算法:如何打印字母的大形状

java - java中极小极大算法的树表示