ジョイパッドの入力状態

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

ジョイパッドの入力状態

#1

投稿記事 by 無能プログラマー9 » 7年前

ジョイパッドの〇と×で決定と取り消しのプログラムを作ったのですがキャラが決まるとステージもそのまま決まってしまうのですがどうしたらいいのでしょうか

簡単なプログラム

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の決定が残っているのだと思うのですが対処法を教えてください。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ジョイパッドの入力状態

#2

投稿記事 by みけCAT » 7年前

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
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で殴ればいい!(死亡フラグ)

無能プログラマー9

Re: ジョイパッドの入力状態

#3

投稿記事 by 無能プログラマー9 » 7年前

回答ありがとうございます 実際にやってみます
Codeの話ですが緊急で必要で説明などしっかりと見れていなかったので申し訳ありません

返信

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