ページ 11

方向キー入力判定

Posted: 2014年2月14日(金) 17:15
by amehirune
お久しぶりです、アメヒルネです。
今回お尋ねしたいのは、「キー入力判定のやり方」です。

初めのうちは、ショットを打っていたとき(龍神録参照)と同じように、
CheckStatePadを使ってメニュー画面のようなものを作ろうとしていました。
メニュー画面のように、一回下キーを入力すると、指示されている部分が一つ下に下がるようなイメージです
(分かりにくくてすみません…)

しかし、これだと「キーが押されている間」という判断処理をされてしまうため、
短く一回押しただけでも数回移動処理されてしまうことがよくあります。
一回押すだけで、カーソルが3つ4つ下がってしまうのです。

一度、下のようなイメージでソースを組んだことがあります。
[hr]1) ローカル整数型変数「key_count」を、初期値を0にして宣言
2) CheckStatePadを使って、判定が1の間はkey_countを1増やす
   0の時は、key_countを0にする
3) key_countが1の時のみ、カーソルの移動処理を行わせる
[hr]
ですが、これだとソースが無駄に長くなり、ごちゃごちゃしていてわかりにくく、
ついでにエラーまで発生して、このやり方は妥当ではないと判断した次第です。

そこで、本日お尋ねしたいのは、長押し判定をなくす処理の中で、
①上記のやり方でも十分にできるのかどうか
②できるのであれば、どのようなコードを描くのが正解なのか
③できないのであれば、どのようなソースを描く(どのような関数を作る)のがふさわしいのか
です。

しっかり理解しながらプログラムを組んでいきたいので、
解説を交えながらご教授いただければ幸いです。

長文失礼しました。また、我が侭が強いと思います。ですが、恐縮ながら、自分の力だけでは厳しいです。
どうかよろしくお願いします。

Re: 方向キー入力判定

Posted: 2014年2月14日(金) 17:37
by softya(ソフト屋)
こちらは読まれたのでしょうか? それをそのまま実装している処理が有るのですが。
【補足】 正確には、その問題を解決した形で実装したコードです。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/

「2.9 全てのキーの入力状態を取得する」がそれに当たるのですが、それ以外もちゃんと理解されたほうが後々役立つと思います。

Re: 方向キー入力判定

Posted: 2014年2月14日(金) 17:46
by amehirune
あ…(汗)
ありがとうございます、そちらのページがあることを忘れていました…

ご指摘ありがとうございます。
今後も不明な点はお尋ねしていこうと思っています。よろしくお願いします。