ページ 11

ボタンの入力

Posted: 2012年6月30日(土) 13:48
by わからんこ
http://www.nicovideo.jp/watch/sm8331341

この動画のようにデバックを表示させたいのですが、

一回目のボタン入力でデバック表示、
二回目のボタン入力でデバックを消す

この様な動作を実現する際、私はボタンが入力された際、

カウントする変数をつくり、変数ごとに処理をわけました。

しかし、いちフレームで一回カウント変数に数値が加算されるために

うまくいきません。

このような、稚拙な質問ですいませんが、ご回答おねがいします

Re: ボタンの入力

Posted: 2012年6月30日(土) 14:15
by nil
何がどのようにうまくいかないのかを具体的に説明してください

また、ボタンとはキーボード入力ということでいいですか?

Re: ボタンの入力

Posted: 2012年6月30日(土) 14:23
by わからんこ
すいません。説明不足でした。

キーボード入力なのですが、

一度ボタンを押すとデバックが消えたり、ついたりします。

Re: ボタンの入力

Posted: 2012年6月30日(土) 14:44
by softya(ソフト屋)
前の質問を放置しないようにお願いします。
http://dixq.net/forum/viewtopic.php?f=3&t=10727#p86537

Re: ボタンの入力

Posted: 2012年6月30日(土) 14:50
by nil
まず、DXライブラリを使っているのであれば、
例えばキーの入力を返す関数CheckHitKey等は
押されている間ずっと1を返します。
なので、
if( CheckHitKey( KEY_INPUT_~~~ ) == 1 )
のような分岐を作った場合、その中身は押されている間毎フレーム実行されてしまいます

これを回避する方法は主に2つあり、
①前のフレームでキーが押されて無く、かつそのフレームでキーが押されているときにのみ1を返す関数を作る
②何フレームきーが連続で入力されているかを返す関数を作る
です

前述のCheckHitKeyの代わりにその関数を呼び出せばいいのです

Re: ボタンの入力

Posted: 2012年6月30日(土) 14:59
by softya(ソフト屋)
こちらで用意されたような関数を使えば押された直後だけに反応できますよ。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/02_09.html

ゲームプログラミングの館は役に立つ情報が色々あるので、全部目を通された方が良いと思います。

Re: ボタンの入力

Posted: 2012年6月30日(土) 15:38
by わからんこ
ありがとうございます。

一応全部読んだのですが、まだまだ勉強不足でした。

ご回答ありがとうございました。

次からは解決、忘れないないよう気をつけます。