2012-01-08 13 views
1

私は4-40FPSで動作するコマンドラインゲームを作成しています(後で選択します)。しかし、私には問題があります。 putchar()を使って1920の色の文字からなる "画像"を描くには、0.2〜0.3秒かかるので、画像を1行ずつ描くことができます。しかし、たとえば、Firefoxでは、キャンバスに64000 RGBピクセルを10分の1秒未満で描画することができます。遅延のないコンソールへの書き込み

遅延を避ける方法はありますか?それはコンソールによって強制される遅延ですか、それとも実際に出力を処理するのにどれくらいの時間がかかりますか?

+0

コンソールゲームは長い間使用されてきました。彼らがこの問題をどのように解決したかを見るために先行技術を検討しましたか?これは良いスタート地点になるかもしれません:http://code.google.com/p/ascii-game-engine/ – aroth

答えて

7

putcharを使用しないでください。スクリーンの状態を表すバッファーを文字でいっぱいにして、writeを使用してバッファーを一度にstdoutに送信してからフラッシュします。例えば

:この種の write(STDOUT_FILENO, buffer, buffer_size); fflush(stdout);

+0

ありがとうございますが、20 FPSで動作しますか? – Triang3l

+0

これを試してみて、カスタムカラーを見ることができません。解決策はありますか? – Triang3l

+0

カスタム色を変更するには 'fputs(" \ 033 [40m "、stdout)'を使用してください。 –

2

あなたはメモリ内にあなたの出力文字列を組み立て、1つの安心して書くべき例えばprintf関数を使用して

+0

あなたの出力の色を表示するには:http://linuxgazette.net/issue65/padala.html –

関連する問題