ジョイパッドの〇と×で決定と取り消しのプログラムを作ったのですがキャラが決まるとステージもそのまま決まってしまうのですがどうしたらいいのでしょうか
簡単なプログラム
int P1Flag=0;
int P2Flag=0;
int StageFlag=0;
if(P1Flag==0)
{
if( ( GetJoypadInputState( DX_INPUT_PAD1 ) & PAD_INPUT_1 ) == 0 )//P1の〇を押されたら
{
P1Flag=1;
}
}
if(P1Flag==1)
{
if( ( GetJoypadInputState( DX_INPUT_PAD1 ) & PAD_INPUT_2 ) == 0 )//P1の×を押されたら
{
P1Flag=0;
}
}
if(P2Flag==0)
{
if( ( GetJoypadInputState( DX_INPUT_PAD2 ) & PAD_INPUT_1 ) == 0 )//P2の〇を押されたら
{
P2Flag=1;
}
}
if(P2Flag==1)
{
if( ( GetJoypadInputState( DX_INPUT_PAD2 ) & PAD_INPUT_2 ) == 0 )//P2の×を押されたら
{
P2Flag=0;
}
}
if(P1Flag==1&&P2Flag==1) //P1とP2が決まったら
{ //P1の〇またはP2の〇を押されたら
if(( GetJoypadInputState( DX_INPUT_PAD1 ) & PAD_INPUT_1 ) == 0|| ( GetJoypadInputState( DX_INPUT_PAD2 ) & PAD_INPUT_1 ) == 0 )
{
StageFlag=1;
}
}
簡単なものですがこのプログラムだと
P1orP2決定→両方とも決定→ステージの決定が飛ばされるようになっており P1やP2の決定が残っているのだと思うのですが対処法を教えてください。
ジョイパッドの入力状態
Re: ジョイパッドの入力状態
ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
・ボタンが押され始めたフレームのみ処理を行う
・1フレームではキャラかステージの決定のどっちかのみを行う
ようにするといいと思います。
擬似コード (2Pや×の処理は省略しましたが、同様に)
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
例えば無能プログラマー9 さんが書きました:対処法を教えてください。
・ボタンが押され始めたフレームのみ処理を行う
・1フレームではキャラかステージの決定のどっちかのみを行う
ようにするといいと思います。
擬似コード (2Pや×の処理は省略しましたが、同様に)
int P1Flag = 0;
int StageFlag = 0;
int P1Circle = 0; // 1Pの○ボタンを処理するべきか (毎フレーム0にリセットする)
if (前のフレームで1Pの○が押されていない && このフレームで1Pの○が押されている) {
P1Circle = 1; // 押されたのでフラグを立てる
}
if (P1Flag == 0 && P1Circle) {
// キャラの決定がまだで、○が押された
// キャラを決定し、○を「消費」する
P1Flag = 1;
P1Circle = 0;
}
if (P1Flag == 1 && P1Circle) {
// キャラの決定がされていて、○が押された
// ステージを決定し、○を「消費」する
StageFlag = 1;
P1Circle = 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)