GetJoypadInputState関数の使い方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kyonkyon
記事: 7
登録日時: 10年前

GetJoypadInputState関数の使い方

#1

投稿記事 by kyonkyon » 10年前

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という値が返ってしまって左方向に移動しないように思えるのですが・・・(^^;;
考え方が間違っているでしょうか?ご指導ご鞭撻のほどよろしくお願いします!

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: GetJoypadInputState関数の使い方

#2

投稿記事 by softya(ソフト屋) » 10年前

10(10進数)の2進数は1010ですので、そこが間違ってます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

kyonkyon
記事: 7
登録日時: 10年前

Re: GetJoypadInputState関数の使い方

#3

投稿記事 by kyonkyon » 10年前

あああああああ・・・そうでした・・・・2進数変換が間違っているとはお恥ずかしい・・・(>_<)
ありがとうございます!!(*´ω`*)

閉鎖

“C言語何でも質問掲示板” へ戻る