宣言 | int GetJoypadInputState( int InputType ) ; | ||||||||||||||||||||||||||||
概略 | ジョイパッドの入力状態を得る | ||||||||||||||||||||||||||||
引数 | InputType : 入力状態を取得するパッドの識別子 DX_INPUT_KEY_PAD1 : キー入力とパッド1 DX_INPUT_PAD1 : パッド1 DX_INPUT_PAD2 : パッド2 DX_INPUT_PAD3 : パッド3 DX_INPUT_PAD4 : パッド4 DX_INPUT_KEY : キー入力 |
||||||||||||||||||||||||||||
戻り値 | パッドの入力状態 | ||||||||||||||||||||||||||||
解説 | 指定した識別子のパッド又はキーの入力状態が返ります。 DX_INPUT_KEY_PAD1 を指定するとキー入力とパッド1の入力状態を得ることが出来ます。 DX_INPUT_KEY は下記の対応表のキー入力部のみの入力状態を得ます。 入力状態は int型 データとして返り、入力マスクを戻り値とAND演算をして結果が0でなければ そのボタンが押されている事を示します。
例 この関数は返される値の各ビットが各ボタンに対応しており最大で 28個のボタンの状態を調べることが出来ます。 各ビットの構成は以下のようになっています。 ビットが1になっていれば押されていることを示し、0の場合はおされて いないことを示しています。 (MSB)上位ビット (LSB)下位ビット BBBBBBBBBBBBBBBBBBBBBBBBBBBBURLD D・L・R・U:それぞれ方向キー下・左・右・上 B:ボタン つまり下ボタンの状態を知りたい場合は int DownState ; int InputState ; InputState = GetJoypadInputState( DX_INPUT_PAD1 ) ; DownState = InputState & 1 ;として、DownState が0でなければ下キーが押されていることを示します。 16個目のボタンの状態を知りたい場合は int ButtomState ; int InputState ; InputState = GetJoypadInputState( DX_INPUT_PAD1 ) ; ButtomState = InputState & 0x80000 ;として、ButtomState が0でなければ16個目のボタンが押されていること になります。 もし DX_INPUT_KEY_PAD1 又は DX_INPUT_KEY としても当然キーボードの 入力が反映されるのは14ビット目までで、14ビット以上のビットは ジョイスティックのボタン入力のみの入力状態となります。 |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int PadInput ; DxLib_Init(); DrawString(150,240,"STARTボタンを押してください",GetColor(255,255,255)); // パッド1のSTARTキーの入力待ち while(!(GetJoypadInputState(DX_INPUT_KEY_PAD1) & PAD_INPUT_START)) { ProcessMessage(); } DxLib_End(); return 0; } |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int g; int x=0,y=0; DxLib_Init(); g = LoadGraph("test.png"); SetDrawScreen(DX_SCREEN_BACK); int pad = GetJoypadInputState(DX_INPUT_KEY_PAD1); while(!(pad & PAD_INPUT_START)) { ClearDrawScreen(); if(pad & PAD_INPUT_LEFT)x--; if(pad & PAD_INPUT_RIGHT)x++; if(pad & PAD_INPUT_UP)y--; if(pad & PAD_INPUT_DOWN)y++; DrawGraph( x, y , g , FALSE); ScreenFlip(); pad = GetJoypadInputState(DX_INPUT_KEY_PAD1); ProcessMessage(); } DxLib_End(); return 0; } |