ゲームを作る宿題があります。そのため、乱数を生成して表示し、数秒後に数字が消え、ユーザーが降順で入力する必要があるゲームを作成しました。ゲームは正常に動作し、すべての出力は正しいです...しかし、問題は、数字を作成し、それらを配置し、受け入れるためのさまざまな関数を作成したことです..関数呼び出しが来るたびに、Enterキーを数回押す必要があります。
キーを押さずにこれらの関数を呼び出して、Enter キーを押さずにプログラムを動作させる方法はありますか?
Enter キーが押されるのを待たずに、標準入力から文字をキャプチャする
これは純粋な C++ では移植可能ではありません。これは、stdin に接続されている可能性のある使用端末に依存しすぎるためです (通常は行バッファーされています)。ただし、そのためにライブラリを使用できます。
- conio は Windows コンパイラで利用できます。関数 _getch() を使用して、Enter キーを待たずに文字を入力します。私は頻繁に Windows を開発するわけではありませんが、クラスメートが単に conio.h をインクルードして使用しているのを見たことがあります。ウィキペディアの conio.h を参照してください。これには、Visual C++ で非推奨と宣言されている getch がリストされています。
- curses は Linux で利用できます。互換性のある curses の実装は Windows でも利用できます。ゲッチ機能もあります。(そのマンページを表示するには man getch を試してください)。ウィキペディアの呪いを参照してください。
クロス プラットフォームの互換性を目指す場合は、curses を使用することをお勧めします。そうは言っても、ラインバッファリングをオフにするために使用できる機能があると確信しています(「調理済みモード」ではなく「生モード」と呼ばれていると思います(man sttyを調べてください))。私が間違っていなければ、Curses は移植可能な方法でそれを処理します。