-2

我正在使用system("cls")and创建游戏printf。我有一个用于该字段的二维字符数组。我每 0.5 秒刷新一次屏幕并显示整个字段,但屏幕闪烁严重。无论如何我可以使它顺利。
我的操作系统是 Windows。

4

2 回答 2

5

使用 ncurses(或 pdcurses,在 Windows 上可能更容易设置。)如果不能,请不要清除屏幕,因为这会导致闪烁。相反,将光标再次定位到左上角 (0, 0) 然后绘制。要将光标定位在 0、0 处,您可以执行以下操作:

#include <windows.h>
// ...
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); 
COORD position = {0, 0};
SetConsoleCursorPosition(handle, position);
于 2013-01-23T08:47:26.720 回答
1

另一种选择是创建第二个屏幕缓冲区。您可以直接写入此内容,因为它不可见。当您准备好新帧时,将可见缓冲区与第二个缓冲区交换。这会立即显示新帧,您现在可以在原始缓冲区中绘制。

这种技术被广泛使用,被称为双缓冲

于 2013-01-23T10:39:00.730 回答