ここ(http://www.plustarnet.com/aspil/Programming/c11.htm)の3つ目のサンプルコードの下で、
最初から全部判定していかなければなりません。つまり、無駄にCPUを使用することにもなりかねません。
と書かれています。まあ、これを鵜呑みにしたわけですが、
DXLibで、キー入力判定後の動作(例えばWを押したらキャラが前進するとか)をswitchを使って場合分けするにはどうしたらいいでしょうか?
こうではなく
GetHitKeyStateAll( KeyBuf )
if( KeyBuf[KEY_INPUT_W] == 1 )
{
前に進む処理
}
if( KeyBuf[KEY_INPUT_S] == 1 )
{
後ろに進む処理
}
if( KeyBuf[KEY_INPUT_A] == 1 )
{
左に進む処理
}
if( KeyBuf[KEY_INPUT_W] == 1 )
{
右に進む処理
}
こんな感じにしたいのです。
↓文法(switchに使えるのが整数のみ)という点では間違ってますがやりたいことは伝わるでしょうか?
switch(KeyBuf)
case W
前に進む処理
break:
以下略
なにかいい方法はないでしょうか?
キー入力後動作をSwitchを使ってやるには?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: キー入力後動作をSwitchを使ってやるには?
その手の処理の速度はさほど気にしなくて良いのですよ。
ここを気にするなら、当たり判定とかもっと速度に関係する所を意識すべきだと思います。
逆に だと前処理が必要だったり、同時に2つのキーを押せ無くなるなど実害のほうが多いと思います。
switch(KeyBuf)だと一意の値しか処理できませんからね。
ここを気にするなら、当たり判定とかもっと速度に関係する所を意識すべきだと思います。
逆に だと前処理が必要だったり、同時に2つのキーを押せ無くなるなど実害のほうが多いと思います。
switch(KeyBuf)だと一意の値しか処理できませんからね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: キー入力後動作をSwitchを使ってやるには?
無理にやるとしたらこんな感じでしょうか。
同時押しの処理が面倒になるだけですが...
同時押しの処理が面倒になるだけですが...
Re: キー入力後動作をSwitchを使ってやるには?
お二方にいただいた回答により、
やはり、無理(というか無駄)という結論に達しました。
C++ももうちょっと使い勝手がいいといいなぁと身勝手なことを思ってしまいました^^;
やはり、無理(というか無駄)という結論に達しました。
C++ももうちょっと使い勝手がいいといいなぁと身勝手なことを思ってしまいました^^;
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: キー入力後動作をSwitchを使ってやるには?
メインテーマを使い勝手なのか、CPUの負荷なのか明確にされたほうが良いと思います。
大体使い勝手の良い方法はCPU負荷を必要とします。
今回の場合は、どちらにしてもあまり良い方法が無さそうですが。
大体使い勝手の良い方法はCPU負荷を必要とします。
今回の場合は、どちらにしてもあまり良い方法が無さそうですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: キー入力後動作をSwitchを使ってやるには?
h2so5さんのコードでcase 5/*1+4*/で左前というふうに斜め判定できますし、左右同時押しのような有り得ない入力を弾けるので便利だと思いますけど。
プログラミング言語とは関係のない話ですね。
キーの状態を配列に返すというDXライブラリ、というかWin32 APIの仕様の問題です。
キーコンフィグがあったり、壁伝い移動とか斜め移動速度補正とかしたら、もっと複雑になるので、キー入力も(ついでにパッド入力も)仮想化したモジュールを作ってしまえば良いと思います。
プログラミング言語とは関係のない話ですね。
キーの状態を配列に返すというDXライブラリ、というかWin32 APIの仕様の問題です。
キーコンフィグがあったり、壁伝い移動とか斜め移動速度補正とかしたら、もっと複雑になるので、キー入力も(ついでにパッド入力も)仮想化したモジュールを作ってしまえば良いと思います。
Re: キー入力後動作をSwitchを使ってやるには?
ありがとうございます。
ゲームがある程度完成したら、か、行き詰ったとき、暇なときにまた考えてみます
ゲームがある程度完成したら、か、行き詰ったとき、暇なときにまた考えてみます