2016-12-07 39 views
1

WindowsでCodeBlocksを使用してCでプロジェクトを作成しています。このプロジェクトでは、動くキャラクタをコンソールに表示しています(グラフィック機能は使用したくありません) 。そのために、文字を印刷して少し待ってから、システム(cls)を使用して文字の位置を移動し、文字をもう一度印刷するので、動くように見えます。C言語のgetcharの待ち時間を最大にする方法

私が追加したいのは、ユーザーが上部のキーに当たった場合、文字が上に移動し、そうでない場合は移動していた方法を続けるということです。私はgetchar()を使用しようとしましたが、問題はタイムアウトなしで文字がヒットしたことを確認することです。したがって、何もヒットしなかった場合、プログラムは動いている文字の表示を停止します。 getcharにタイムアウト機能を追加する方法や、別の方法を使用する方法はありますか?

+0

私は確信していますが、あなたは 'STDIN'をファイルにリダイレクトして、そのファイルを読みとるべきだと思います。 – SkrewEverything

+1

'select'を見てください。入力にタイムアウトを設定することはできますが、キーボードを生のバッファーなしモードにする必要があります。 –

+0

これには、非標準のコンソールAPIを使用することをお勧めします。純粋な標準Cは粗すぎる。 – Lundin

答えて

3

これを行うための移植可能な方法はありません。

Posix準拠のシステムでは、select()にタイムアウトを指定すると、プロセス標準入力であるシステムハンドル0からの入力が可能かどうかを確認できます。保留中の入力を取得するには、readを使用します。

0

あなたはユーザーではなくWindowsではgetchは

0

を呼び出すよりも、何かを入力した場合、あなたは古い<conio.h>機能を使用することができますチェックするためにバッファの内容を見て、その後標準入力でバッファを関連付けるためにはsetvbufを使用してみてください可能性があります

  • _kbhit()キーボードが押されたかどうかは、キー値が取得される
  • _getch()です。

しかし、これらの機能を使用するのは本当に移植性がありません。あなたは、あなたが望むことを行うためにncursesのようなものを使うことができます。 Windowsの場合、良いライブラリが存在します:PDCurses

関連する問題