初心者の方は知らないかと思いますが、
大体のプログラミング言語にはビット演算というものがあります。
( << , >> , & , | , ^ , ~ など)
皆さんはこれらを使用していますでしょうか?
(またはどのようなところで使用していますでしょうか?)
ビット演算は奥が深いもので、
フラグを立てる用途から2の倍数の乗除、
データの暗号化やハッシュ値生成など、意外と幅広い所で使われています。
どのように使っているか、というのが質問なのですが、
ここは初心者のための掲示板ですので、
出来ればわかるような説明が望ましいかもしれません。
私は、使えるところはバリバリ使う方です。
たとえば、ゲームに関連する処理で、ボタンの入力状態を返す時、
// ボタンを押した瞬間かどうかのフラグを返す int ispush( int now, int prev ){return ((prev | now) ^ prev);} // ボタンを押している間かどうかのフラグを返す int ispress( int now, int prev ){return (now & prev);} // ボタンを離した瞬間かどうかのフラグを返す int ispull( int now, int prev ){return ((now | prev) ^ now);} // ボタンを押していない間かどうかのフラグを返す int isfree( int now, int prev ){return ~(prev | now);}
このようにしています。(ビット演算初見の方は 何じゃこりゃ!? と思いますね^^;)
これは int 値に入っているフラグをまとめて処理できるのでオススメです。
(DXライブラリのGetJoypadInputState()に使えると思います)
処理の意味を分かりやすくするため、
上記の関数をボタン一個に対しての判定に置き換えた場合も書いておきます。
// 押されている = 1 、押されていない = 0 とした場合 // ボタンを押した瞬間かどうかを返す int ispush( int now, int prev ){return (now != 0) && (prev == 0);} // ボタンを押している間かどうかを返す int ispress( int now, int prev ){return (now != 0) && (prev != 0);} // ボタンを離した瞬間かどうかを返す int ispull( int now, int prev ){return (now == 0) && (prev != 0);} // ボタンを押していない間かどうかを返す int isfree( int now, int prev ){return (now == 0) && (prev == 0);}
という感じになります。