ゲームパットのプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
電気屋

ゲームパットのプログラム

#1

投稿記事 by 電気屋 » 15年前

ゲームパットのプログラムを作ったのですが、DAWNのPADしか反応しません。ゲームパットが故障している可能性も考えたのですが、コントロールパネルでテストしたところ正常に動作しました。プログラムでいけないところがあったら教えてください。

電気屋

Re:ゲームパットのプログラム

#2

投稿記事 by 電気屋 » 15年前

一応、4方向に歩くプログラムを改造して作成しています。

if(ch.x%32==0 && ch.y%32==0){ //座標が32で割り切れたら入力可能
ch.walking_flag=1; //歩くフラグを立てる。
if ( Key[ KEY_INPUT_UP ] == 1 || (GetJoypadInputState(DX_INPUT_PAD1) & PAD_INPUT_UP ) == 1){ //上ボタンが押されたら
ch.muki=0;} //上向きフラグを立てる
else if( Key[ KEY_INPUT_LEFT ] == 1 || (GetJoypadInputState(DX_INPUT_PAD1) & PAD_INPUT_LEFT ) == 1){ //左ボタンが押されたら
ch.muki=1;} //左向きフラグを立てる
else if( Key[ KEY_INPUT_DOWN ] == 1 || (GetJoypadInputState(DX_INPUT_PAD1) & PAD_INPUT_DOWN ) == 1){ //下ボタンが押されたら
ch.muki=2;} //下向きフラグを立てる
else if( Key[ KEY_INPUT_RIGHT] == 1 || (GetJoypadInputState(DX_INPUT_PAD1) & PAD_INPUT_RIGHT) == 1){ //右ボタンが押されたら
ch.muki=3;} //右向きフラグを立てる
else //何のボタンも押されてなかったら
ch.walking_flag=0; //歩かないフラグを立てる
}

toyo

Re:ゲームパットのプログラム

#3

投稿記事 by toyo » 15年前

PAD_INPUT_UP 8
PAD_INPUT_RIGHT 4
PAD_INPUT_LEFT 2
PAD_INPUT_DOWN 1
なので == 1で判定すると PAD_INPUT_DOWN 以外は判定できません
GetJoypadInputState(DX_INPUT_PAD1) & PAD_INPUT_*
の判定は0(押されていない)か0以外(押されている)かで判定するようにしましょう

softya

Re:ゲームパットのプログラム

#4

投稿記事 by softya » 15年前

全て==1でチェックしていますが、AND論理演算の結果は1とは限りません。
(GetJoypadInputState(DX_INPUT_PAD1) & PAD_INPUT_UP ) == 1
たまたま、DOWNだけ一致したんだと思います。
全てを
(GetJoypadInputState(DX_INPUT_PAD1) & PAD_INPUT_UP ) != 0
と同様にしてみてください。

電気屋

Re:ゲームパットのプログラム

#5

投稿記事 by 電気屋 » 15年前

無事動くことができました。ありがとうございました。


閉鎖

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