PAD_INPUT
Re:PAD_INPUT
まず、PADとキーの対応関係を明らかにしてください。
PADの入力は本家を参照してください。
ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_input.html#R5N4
例えば、PAD_INPUT_AとKEY_INPUT_Xを同じものとして扱いたいなど。
また、これを扱うなら先ほど挙げた龍神録解説ページが詳しいので、参照してください。
ちょっと長いかも知れませんが、読んでしまえば、丸々使えます。
もしキーとPADの入力を分けるなら、単にGetHitKeyStateAll_2
のキー監査256個に自分が入力状態を得たいPADキー分増やせば良いです。
が、これだとPADを持っていない人は遊べなくなるので、意味無いですね^^;
PADの入力は本家を参照してください。
ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_input.html#R5N4
例えば、PAD_INPUT_AとKEY_INPUT_Xを同じものとして扱いたいなど。
また、これを扱うなら先ほど挙げた龍神録解説ページが詳しいので、参照してください。
ちょっと長いかも知れませんが、読んでしまえば、丸々使えます。
もしキーとPADの入力を分けるなら、単にGetHitKeyStateAll_2
のキー監査256個に自分が入力状態を得たいPADキー分増やせば良いです。
が、これだとPADを持っていない人は遊べなくなるので、意味無いですね^^;
Re:PAD_INPUT
変えるところはいくつかありますが、例えば
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_UP ) 上を押した時の処理 ;
のように書くことができます。
DX_INPUT_KEY_PAD1ならパッドとキーボード両方使えます。
14歳の本を持っているのなら詳しく説明されていたと思いますが。
ちなみにこれだとキーコンフィグはできないです。
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_UP ) 上を押した時の処理 ;
のように書くことができます。
DX_INPUT_KEY_PAD1ならパッドとキーボード両方使えます。
14歳の本を持っているのなら詳しく説明されていたと思いますが。
ちなみにこれだとキーコンフィグはできないです。
Re:PAD_INPUT
解決後の投稿で申し訳ないですが、気になって作ってみたのでせっかくなので載せてみます。
ゲームプログラミングの館の40節のプログラムのゲームパッド版です。
もちろんhttp://dixq.net/rp/8.htmlのキーコンフィグ対応のほうが良いのでしょうが
少し飛躍していて分かりにくいですし、簡単なゲームなら必要ないと思いますので
40cにパッドについても加筆されてはどうでしょうか、管理人様。
DX_INPUT_KEY_PAD1にしてますのでパッドがなくてもキーボードでも動作します。
キーボードは別でパッドだけにするならDX_INPUT_PAD1として下さい。
ゲームプログラミングの館の40節のプログラムのゲームパッド版です。
もちろんhttp://dixq.net/rp/8.htmlのキーコンフィグ対応のほうが良いのでしょうが
少し飛躍していて分かりにくいですし、簡単なゲームなら必要ないと思いますので
40cにパッドについても加筆されてはどうでしょうか、管理人様。
DX_INPUT_KEY_PAD1にしてますのでパッドがなくてもキーボードでも動作します。
キーボードは別でパッドだけにするならDX_INPUT_PAD1として下さい。
#include "DxLib.h" #define PAD_MAX 16 unsigned int KeyPad[PAD_MAX]; int GetHitPadStateAll_2(){ int PadInput = GetJoypadInputState( DX_INPUT_KEY_PAD1 );//パッドの入力状態を取得 for(int i=0; i<PAD_MAX; i++){ if( PadInput & 1<<i)KeyPad++;//押されていたらカウントアップ else KeyPad=0;//押されてなかったら0 } return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode(TRUE);//ウィンドウモード if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化 while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitPadStateAll_2()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0){ //↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない for(int i=0; i<PAD_MAX; i++) DrawFormatString(0, 20*i, GetColor(255,255,255), "ボタン%d:%u", i, KeyPad); if(KeyPad[3]==1)//ボタン3(上)が押された瞬間 DrawBox(0,0,640,480,GetColor(255,255,255),TRUE);//画面全体を白い四角で表示 //if(KeyPad[3]>0) 押されている間の処理; //if(KeyPad[3]>10) 長押しされている時の処理; ScreenFlip(); } DxLib_End(); return 0; }