ボタンの処理

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

ボタンの処理

#1

投稿記事 by megaman » 10年前

こんにちは、またお世話になります。
変わらずロックマン風アクションを作っていますが、今回はボタンの処理について質問します。
ロックマンなら必要不可欠なチャージショットを実装しようを思っているのですが、基本となる
ソースの仕様が理解できません。
gamemain.cpp

コード:

//キートリガー処理
int IsBKeyTrigger(int key){
	if (key & PAD_INPUT_B){
		if (g_stagedata.g_bkey_prev == 0){
			g_stagedata.g_bkey_prev = 1;
			return 1;
		}

	}
	else {
		g_stagedata.g_bkey_prev = 0;
	}
	return 0;
}
おそらくg_stagedata.g_bkey_prevで押しっぱなしをさせないようにしてると思うのですが、
申し訳ありませんが、解説をお願いします。

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: ボタンの処理

#2

投稿記事 by usao » 10年前

>おそらくg_stagedata.g_bkey_prevで押しっぱなしをさせないようにしてると思うのですが

ぱっと見,その通りかと思いますが… それ以上の何を尋ねているのでしょう?
オフトピック
>ロックマンなら必要不可欠なチャージショット

そんなことは無いと思います.

megaman

Re: ボタンの処理

#3

投稿記事 by megaman » 10年前

>usaoさん
返信ありがとうございます。
すいません、言葉足らずでした。私のやりたいことはこの変数に条件を増やして
「押しっぱなしにするとreturn 2を返す」というような処理に変更したいと思っています。

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: ボタンの処理

#4

投稿記事 by usao » 10年前

提示コードでは,
「キーが押されているか?」 と 「g_bkey_prevの値が0か?」 の2つの状態の組み合わせ(4パターンある)
に対して,各組合せ時の処理が

・押されてて g_bkey_prev==0 のとき → g_bkey_prev=1; return 1;
・押されてて g_bkey_prev!=0 のとき → return 0;
・押されてなくて g_bkey_prev==0 のとき → g_bkey_prev=0; return 0;
・押されてなくて g_bkey_prev!=0 のとき → g_bkey_prev=0; return 0;

という形になってますよね.

>「押しっぱなしにするとreturn 2を返す」というような処理に変更したいと思っています。

上記4パターンのうち,「押しっぱなし」に相当するのはどれでしょうか?
(そのパターンの返り値を 2 に変更すればよいのかもしれません)

megaman

Re: ボタンの処理

#5

投稿記事 by megaman » 10年前

分かりやすくしていただき、ありがとうございます。
その中だと
・押されてて g_bkey_prev!=0 のとき → return 0;
が「押しっぱなし」になりそうですね。つまり

コード:

int IsBKeyTrigger(int key){
	if (key & PAD_INPUT_B){
		if (g_stagedata.g_bkey_prev == 0){
			g_stagedata.g_bkey_prev = 1;
			return 1;
		}
		else{
			g_stagedata.g_bkey_prev = 1;
			return 2;
		}
	}
	else {
		g_stagedata.g_bkey_prev = 0;
	}
	return 0;
}
にすればreturn 2;が戻り値となると。

閉鎖

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