ページ 11

GetJoypadInputState関数の使い方

Posted: 2014年12月10日(水) 14:08
by kyonkyon
GetJoypadInputState関数(以下GJIS関数と略させてください)に関する質問をさせてください。

例えば←と↑がキーボードで同時押しされた時、GJIS関数はPAD_INPUT_LEFT(整数の2)とPAD_INPUT_UP(整数の8)の合計の10という値を返すというのはわかりますが実際にどのボタンが押されているかを確かめる時、&演算子を用いて確かめている方法がよくわかりません。

参考にしている本(14歳からはじめるC言語わくわくプログラミング教室Visual Studio 2013編)では以下のようにプログラムが書かれています。

コード:

int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if(key & PAD_INPUT_UP)  y -= 4;
if(key & PAD_INPUT_DOWN)  y += 4;
if(key & PAD_INPUT_LEFT)  x -= 4;
if(key & PAD_INPUT_RIGHT)  x += 4;
これを検証してみるとたとえば先ほど言ったように↑←の両方のボタンを押してkeyに10という値が返ったとします。先のコードのif(key & PAD_INPUT_LEFT) x -= 4;という部分で考えると10の2進数表示1100と2の2進数表示0010の&演算を行うと0000となってしまい←のボタンが押されているにもかかわらず0という値が返ってしまって左方向に移動しないように思えるのですが・・・(^^;;
考え方が間違っているでしょうか?ご指導ご鞭撻のほどよろしくお願いします!

Re: GetJoypadInputState関数の使い方

Posted: 2014年12月10日(水) 14:17
by softya(ソフト屋)
10(10進数)の2進数は1010ですので、そこが間違ってます。

Re: GetJoypadInputState関数の使い方

Posted: 2014年12月10日(水) 22:06
by kyonkyon
あああああああ・・・そうでした・・・・2進数変換が間違っているとはお恥ずかしい・・・(>_<)
ありがとうございます!!(*´ω`*)