私はコンソールを使ってWindows上でC++でゲームを作っています。これにはターンベースの戦闘が含まれています。私はSleep()
関数を使ってバトル中のメッセージを遅らせ、キーがヒットしたときに進む。私の問題は、ゲームがスリープ機能によって「一時停止」されている間も、ユーザーのキーが押されたことをまだカウントしてから使用することです。_kbhit()と_getch()を入力として使用して、ユーザーの入力ストリームをクリアするにはどうすればよいですか?
たとえば、ユーザーがゲームをスリープ状態にしている間に「a」キーを4回押すと、押した後すぐにそのキーを4回押し続けます。
ユーザのキーを押してプログラムに登録する機能を一時的に「無効」にするにはどうすればよいですか?
ここで答えたように、入力ストリームをフラッシュすることができます:http://stackoverflow.com/questions/257091/how-do-i-flush-the-cin-buffer –
再開するとキューが空になります一時停止し、kbhitがtrueの間にgetchを呼び出し続けます。それはあなたがあなたが非公開にするべきであることをどのように検出するのかという質問をします:) –