ジョイパッドコンフィグプログラムが上手くいかない
Posted: 2012年3月29日(木) 10:18
たびたびすみません;
DXLIBで製作しています。
例の音ゲーでジョイパッドのコンフィグプログラムを作ったのですが、
上手く動作しませんでした・・・。
症状としては、
・一番初めのコンフィグがボタン0番以外が無効(押しても反応なし)
・次のコンフィグに移行するとボタン全てが無効。
・ボタン全ての入力状態fancがボタンを離しても0に戻らない。
これがそのコードです。
DXLIBで製作しています。
例の音ゲーでジョイパッドのコンフィグプログラムを作ったのですが、
上手く動作しませんでした・・・。
症状としては、
・一番初めのコンフィグがボタン0番以外が無効(押しても反応なし)
・次のコンフィグに移行するとボタン全てが無効。
・ボタン全ての入力状態fancがボタンを離しても0に戻らない。
これがそのコードです。
static int fanc=0;
int ReturnPadState(){
for(int i=0;i<PAD_MAX;i++){
if(CheckStatePad(i)>0){
fanc++;
return i;
}else{
fanc=0;
return -1;
}
}
}
static int num=0;
void Configpad_main(configpad_t *configpad,int *state){
char string[8][128] = {
"UP",
"LEFT",
"DOWN",
"RIGHT",
"△",
"□",
"×",
"○",
};
int number[8] = {
configpad->up,configpad->left,configpad->down,configpad->right,
configpad->sankaku,configpad->sikaku,configpad->batu,configpad->maru,
};
for(int i=0;i<8;i++){
DrawFormatString(0,i*20,GetColor(255,255,255),"%s = %d",string[i],number[i]);
}
for(int n=0;n<PAD_MAX;n++){
DrawFormatString(300,n*15,GetColor(255,255,255),"pad.key[%d] = %d",n,pad.key[n]);
}
DrawFormatString(0,300,GetColor(255,255,255),"NUM = %d",num);
DrawFormatString(0,315,GetColor(255,255,255),"fanc = %d",fanc);
switch(num){
case 0://UP
if(fanc==0){
if(ReturnPadState()>=0){
configpad->up=ReturnPadState();
num+=1;
}
}
break;
case 1://LEFT
if(fanc==0){
if(ReturnPadState()>=0){
configpad->left=ReturnPadState();
num+=1;
}
}
break;
case 2://DOWN
if(fanc==0){
if(ReturnPadState()>=0){
configpad->down=ReturnPadState();
num+=1;
}
}
break;
case 3://RIGHT
if(fanc==0){
if(ReturnPadState()>=0){
configpad->right=ReturnPadState();
num+=1;
}
}
break;
case 4://△
if(fanc==0){
if(ReturnPadState()>=0){
configpad->sankaku=ReturnPadState();
num+=1;
}
}
break;
case 5://□
if(fanc==0){
if(ReturnPadState()>=0){
configpad->sikaku=ReturnPadState();
num+=1;
}
}
break;
case 6://×
if(fanc==0){
if(ReturnPadState()>=0){
configpad->batu=ReturnPadState();
num+=1;
}
}
break;
case 7://○
if(fanc==0){
if(ReturnPadState()>=0){
configpad->maru=ReturnPadState();
num+=1;
}
}
break;
case 8:
*state=1;
num=0;
break;
}
}