クリック状態維持変数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
KSK
記事: 79
登録日時: 14年前

クリック状態維持変数

#1

投稿記事 by KSK » 12年前

こんばんは。申し訳ありませんがさっそく質問させていただきます。
1フレーム前までマウス左ボタンが押されていて、
現在のフレームでマウス左ボタンが押されていないという判定をしようとしています。
左ボタンが押されていたらint型変数Counterに1を足し、
押されていなかったらCounterに0を代入、
tmpCounterには常にCounterを代入。
このCounterに対する処理(前)と、tmpCounterに対する処理(後)の間に

コード:

if(Counter==0&&tmpCounter>0)
の処理を書けば望むような処理になるでしょうか?
ややこしくて申し訳ありません。
よろしくお願いします。


A


アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: クリック状態維持変数

#2

投稿記事 by みけCAT » 12年前

コード:

int Counter=0,tmpCounter=0;
/* 中略 */
if(isLeftClickPressed())Counter++; else Counter=0;
if(Counter==0&&tmpCounter>0)onLeftClickReleased();
tmpCounter=Counter;
ということですか?

上の変数宣言が最初に1回だけ呼び出され、下の3行が1フレームに1回ずつ呼び出されるという仮定があれば、ほぼなると思います。
ただし、オーバーフローする可能性を考え、長押しの判定を使わないなら
「int型変数Counterに1を足し」ではなく「int型変数Counterに1を代入し」の方がいいと思います。
しかし、この場合Counter,tmpCounterの名前と役割が一致しないので、他の名前にするべきです。

簡単な判定法としては、一度自分で実験してみればいいと思います。
ただ、実験だけではコーナーケースを見抜けない可能性があるので、理論的な考察も大事です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

KSK
記事: 79
登録日時: 14年前

Re: クリック状態維持変数

#3

投稿記事 by KSK » 12年前

みけCATさん、ありがとうございます。そのような感じです。
書き忘れておりましたが、長押しにより攻撃のチャージ処理を行うのでカウンターにしています。
参考にさせていただきます。助かりました。


A


閉鎖

“C言語何でも質問掲示板” へ戻る