GetJoypadInputState関数の使い方
Posted: 2014年12月10日(水) 14:08
GetJoypadInputState関数(以下GJIS関数と略させてください)に関する質問をさせてください。
例えば←と↑がキーボードで同時押しされた時、GJIS関数はPAD_INPUT_LEFT(整数の2)とPAD_INPUT_UP(整数の8)の合計の10という値を返すというのはわかりますが実際にどのボタンが押されているかを確かめる時、&演算子を用いて確かめている方法がよくわかりません。
参考にしている本(14歳からはじめるC言語わくわくプログラミング教室Visual Studio 2013編)では以下のようにプログラムが書かれています。
これを検証してみるとたとえば先ほど言ったように↑←の両方のボタンを押してkeyに10という値が返ったとします。先のコードのif(key & PAD_INPUT_LEFT) x -= 4;という部分で考えると10の2進数表示1100と2の2進数表示0010の&演算を行うと0000となってしまい←のボタンが押されているにもかかわらず0という値が返ってしまって左方向に移動しないように思えるのですが・・・(^^;;
考え方が間違っているでしょうか?ご指導ご鞭撻のほどよろしくお願いします!
例えば←と↑がキーボードで同時押しされた時、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;
考え方が間違っているでしょうか?ご指導ご鞭撻のほどよろしくお願いします!