ページ 11

入力状態取得について

Posted: 2008年9月07日(日) 18:26
by 自由闊達
Visual C++ 2008 Express Editionを使っています。

A~Zのいずれかのキーが入力されてる場合ってのをやりたいのですが、

(GetHitKeyStateAll_2(Key)を使っています)
if(Key[KEY_INPUT_A]==1||Key[KEY_INPUT_B]==1||…(略)…Key[KEY_INPUT_Z]==1){・・・}

とやるしかないんでしょうか?
もっと簡単な方法があったら教えてもらえないでしょうか?

Re:入力状態取得について

Posted: 2008年9月07日(日) 18:53
by GPGA
KEY_INPUT_A~KEY_INPUT_Zまでは連番で保障されていないので
リストを作成して、ループでまわしてやるのがわかりやすいと思います。
const int list[/url] = {
	KEY_INPUT_A, KEY_INPUT_B, KEY_INPUT_C, KEY_INPUT_D,
	KEY_INPUT_E, KEY_INPUT_F, KEY_INPUT_G, KEY_INPUT_H,
	KEY_INPUT_I, KEY_INPUT_J, KEY_INPUT_K, KEY_INPUT_L,
	KEY_INPUT_M, KEY_INPUT_N, KEY_INPUT_O, KEY_INPUT_P,
	KEY_INPUT_Q, KEY_INPUT_R, KEY_INPUT_S, KEY_INPUT_T,
	KEY_INPUT_U, KEY_INPUT_V, KEY_INPUT_W, KEY_INPUT_X,
	KEY_INPUT_Y, KEY_INPUT_Z,
};
int i;
for (i = 0; i < sizeof(list) / sizeof(list[0]); ++i) {
	if (Key[list] == 1) {
		break;
	}
}
if (i != sizeof(list) / sizeof(list[0])) {
	// いづれかのキーが押された処理
}
 
としては、いかがでしょうか?

Re:入力状態取得について

Posted: 2008年9月08日(月) 02:33
by 自由闊達
おぉ!できました!
なるほど、こーゆー方法があったのですね、勉強になります。
教えてくださってどうもありがとうございました。