コンソールでのキーボード入力について – プログラミング – Home

コンソールでのキーボード入力について
 
通知
すべてクリア

[解決済] コンソールでのキーボード入力について


TOM
 TOM
(@TOM)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

皆さん初めまして。
VBからC++に乗り換えて現在奮闘中のTOMと申します。

今、コンソールのゲームをちまちま作っているのですが
キー入力を「Cin >>」で行った後、いちいちリターンキーを
押さないといけないので困ってます。

ゲーム中に「U」や「D」を押すとすぐに処理を実行したいのですが、
その後にリターンを押して決定させないといけないので
ゲーム進行がスムーズに行きません(^^;

なにか良い方法がありましたら教えて下さいませ。


引用未解決
トピックタグ
toru
 toru
(@toru)
ゲスト
結合: 24年前
投稿: 48
 

方法はC++のみなのかWin32APIなのかで大きく違いますがC++のみの方はわかりません。
Win32APIならGetAsyncKeyStateで入力を見ればOKです。

えっとC++のみの方なんですが確かですがかなり前にQUAKEのソースコードを
見たときの感じではアセンブラだったような気がします(←うろ覚えなので信じないように)。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

_getch()って関数、使えませんかね。
ヘッダーは、conio.hです。


返信引用
TOM
 TOM
(@TOM)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

みなさんご指導ありがとうございました(^^

_getch()で見事解決できました。

GetAsyncKeyStateはVBの時は使ってましたが、
コンソールになるとどうも上手く使えないのです(^^;

例えば・・・

while(GetAsyncKeyState(VK_SHIFT)>=0)
のような条件を付けて「シフトが押されたらループ終了」
という風にして実行しても、シフトを押してるのに一向に終了しません。

でも実行した後、実行してるウィンドウを動かすとキーが検知されて
ループが終了するんです。

上の例で言うとシフトを押しながらウィンドウを動かすとループが終了する
と言った感じです。

_getch()で解決できたので一応は一件落着なのですが(^^;
どうしたものでしょうか・・・


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました