-2

system("cls")と を使用してゲームを作成していますprintf。フィールドの文字の 2 次元配列があります。0.5 秒ごとに画面を更新し、フィールド全体を表示しますが、画面がひどく点滅します。とにかく私はそれをスムーズにすることができますか?
私のOSは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

もう1つの方法は、2番目の画面バッファーを作成することです。表示されないので、これに直接書き込むことができます。新しいフレームの準備ができたら、表示されているバッファーをこの2番目のバッファーと交換します。これにより、新しいフレームが即座に表示され、元のバッファに描画できるようになります。

この手法は広く使用されており、ダブルバッファリングとして知られています。

于 2013-01-23T10:39:00.730 に答える