私は現在、WindowsのC++でゲームを書いています。すべては、これまで偉大な起こっているが、私のメニューは次のようになります。C++で直接キーボード入力を取得するには?
1.Go北
2.Go南
3.Go東
4.Go北
インベントリ
6.Exit
インサートの選択 -
それはうまくいきますが、私はその種のものをしばらく使用していましたが、上下の矢印でナビゲートすることができます。これをどうやってやりますか? Windowsので事前
私は現在、WindowsのC++でゲームを書いています。すべては、これまで偉大な起こっているが、私のメニューは次のようになります。C++で直接キーボード入力を取得するには?
1.Go北
2.Go南
3.Go東
4.Go北
インベントリ
6.Exit
インサートの選択 -
それはうまくいきますが、私はその種のものをしばらく使用していましたが、上下の矢印でナビゲートすることができます。これをどうやってやりますか? Windowsので事前
で
よろしく、あなたは一般的なkbhit()
機能を使用することができます。この関数は、キーボードヒットがあるかどうかによってtrue/falseを返します。次に、getch()
関数を使用して、バッファーにあるものを読み取ることができます。
while(!kbhit()); // wait for input
c=getch(); // read input
また、スキャンコードを見ることもできます。 conio.h
には必要な署名が含まれています。
ncursesなどのコンソールUIライブラリを使用することを検討しましたか?
GetAsyncKeyStateを使用できます。矢印、ファンクションボタン(F0、F1など)などのボタンから直接キーボード入力を取得できます。矢印は同じプラットフォーム間に処理され
// Needed for these functions
#define _WIN32_WINNT 0x0500
#include "windows.h"
#include "winuser.h"
#include "wincon.h"
int getkey() {
while(true) {
// This checks if the window is focused
if(GetForegroundWindow() != GetConsoleWindow())
continue;
for (int i = 1; i < 255; ++i) {
// The bitwise and selects the function behavior (look at doc)
if(GetAsyncKeyState(i) & 0x07)
return i;
}
Sleep(250);
}
}
わからない場合:
は、ここでの実装例です。だから、どのプラットフォーム?また、何を試しましたか? –
非常に似たような質問:http://stackoverflow.com/questions/9324806/how-to-read-standard-input-continuously – BoBTFish