LoginSignup
14
14

More than 5 years have passed since last update.

数値の変化を範囲内で留める方法

Posted at

ある数値を変化させるとき上限と下限を付けたい場合があります
例えば、画面外に飛び出ないようにするとか、HPみたいな範囲がある数値とかです

HPはMaxHPを超えることはないですし、0未満になることもないです
下限以下なら下限に、上限以上なら上限にしたいんですが、if文を書くのは煩わしいです
std::minとstd::maxを組み合わせた方法もあるんですが、いまいち直感的じゃないです

自分で作ってもいいんですが、boostにすでにあるのでこれ使いましょう
boost::algorithm::clampです

使い方はこんな感じ

clamp.cpp
#include <boost/algorithm/clamp.hpp>

void hpchange(int addhp){
  hp = boost::algorithm::clamp(hp + addhp, 0, maxHp);
}

ちなみに、std::minmaxってのがあってあるじゃん!と思っていたら、
これはコンテナみたいな複数の要素の中から最小と最大を同時に見つける関数です
用途が違うので注意しましょう

14
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
14