ページ 1 / 1
ボタンの処理
Posted: 2014年11月14日(金) 10:13
by megaman
こんにちは、またお世話になります。
変わらずロックマン風アクションを作っていますが、今回はボタンの処理について質問します。
ロックマンなら必要不可欠なチャージショットを実装しようを思っているのですが、基本となる
ソースの仕様が理解できません。
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で押しっぱなしをさせないようにしてると思うのですが、
申し訳ありませんが、解説をお願いします。
Re: ボタンの処理
Posted: 2014年11月14日(金) 10:59
by usao
>おそらくg_stagedata.g_bkey_prevで押しっぱなしをさせないようにしてると思うのですが
ぱっと見,その通りかと思いますが… それ以上の何を尋ねているのでしょう?
オフトピック
>ロックマンなら必要不可欠なチャージショット
そんなことは無いと思います.
Re: ボタンの処理
Posted: 2014年11月14日(金) 11:08
by megaman
>usaoさん
返信ありがとうございます。
すいません、言葉足らずでした。私のやりたいことはこの変数に条件を増やして
「押しっぱなしにするとreturn 2を返す」というような処理に変更したいと思っています。
Re: ボタンの処理
Posted: 2014年11月14日(金) 11:45
by usao
提示コードでは,
「キーが押されているか?」 と 「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 に変更すればよいのかもしれません)
Re: ボタンの処理
Posted: 2014年11月14日(金) 11:57
by megaman
分かりやすくしていただき、ありがとうございます。
その中だと
・押されてて 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;が戻り値となると。