【ダイエット】実践していることその3、ダイエットのためにお金をケチらない

その1についてはこちら。

【ダイエット】実践していることその1、体重計を買うべし

その2についてはこちら。

多少波がありますが、今、体重が減少傾向にあります。

今日明日頑張ればもっと体重落ちそう。

ダイエットを本気で取り組もうと思っているならば、あえて、高いコストをかけるというのも1つの手段ダと思います。

自分の場合は、トレーニングウェアに1万円のスポーツブランド(デサント)を購入しましたし、

トラッカーには2万円のFitbit Versa 2を購入。

体重測定には1万円のFitbit Aria2を使用していますし、

ランニングでは2.6万円のソニー WF-SP800Nを購入しました。

SAVASのデカイ袋のプロテインをほぼ毎日飲んでいます。

なぜ高い物を選択するのかというと、

ダイエット・トレーニングの効率を高めるという意味もありますが、

ダイエットを諦めるハードルを下げないためでもあります。

例えば、こんな経験は無いですか?

近所に安くていつでも使えるトレーニングジムが出来たと聞いて、会員になったものの、結局月に1回しか通ってない。

いつでも通えると思ったら明日でいいやと思ったり、結局めんどくさいと思ったり。

そんな状態のまま数ヶ月、無駄にジムの月額使用料を支払っている。

(まさしく過去の自分です。)

後々考えれば、こんなことにお金を使わずに、お金はかかるけど完全予約制の専属トレーナー付きのジムに通った方が、遙かに効率的だと思いませんか?

完全予約制ですから必ずジムに通わなければなりませんし、トレーナーがきちんとトレーニングを指導してくれます。

ここまでやったら成果が出ないと、もったいないじゃ無いですか。

これは一つの例でしたが、

結局、安いコストしかかけていないと、止めようと思ったら簡単に止めることが出来てしまいます。

しかし、高いコストをかけることで、「ここまでお金をかけたんだから成果を出さないともったいない。」という考えが出てくると思うんです。

つまり、ダイエットを諦めるハードルが全然違ってくるんです。

ハードルを高くすることは継続に繋がります。

本気でダイエットをしたいと考えているのならば、安物で揃えてそれで成果が出ればラッキー、という考えでは無くて、高い金をかけてるんだから絶対成果を出してやる!という考えじゃないと無理だと思います。

まさしくそれがダイエットに対する本気度だと思いますよ。

【北海道大戦】ランダムで隣接する都市を選択する

前回までの状況はこちら。

最新ソースはこちら(gitHub)

https://github.com/takishita2nd/HokkaidoWar

今回はバトルを仕掛ける市町村を選択する処理を実装します。

自分のターンが回ってきた市町村から、隣接する市町村をランダムで選択し、攻撃を仕掛ける、という感じにしたいと思います。

ただし、何もしない(攻撃を仕掛けない)ケースもあるものとします。

さらに、攻撃側の市町村と防御側の市町村が分かるように色分けしましょうか。

    class City
    {

        public void PaintAttackColor()
        {
            var color = new asd.Color(255, 0, 0);
            foreach(var m in _maps)
            {
                m.SetColor(color);
            }
        }

        public void PaintDeffenceColor()
        {
            var color = new asd.Color(0, 0, 255);
            foreach (var m in _maps)
            {
                m.SetColor(color);
            }
        }

        public void ClearPaint()
        {
            foreach (var m in _maps)
            {
                m.SetColor(_color);
            }
        }
    class Battle
    {
        public void NextTurn()
        {
            if(prevAttack != null)
            {
                prevAttack.ClearPaint();
            }
            if(prevDeffece != null)
            {
                prevDeffece.ClearPaint();
            }

            var targets = _cities[cityCnt].GetLinkedCities();
            var r = Singleton.GetRandom();
            int targetIdx = r.Next(0, targets.Count + 1);
            prevAttack = _cities[cityCnt];
            prevAttack.PaintAttackColor();

            var info = Singleton.GetGameProcessInfomation();
            if(targetIdx >= targets.Count)
            {
                info.ShowText(prevAttack.GetPosition(), string.Format("{0} turn {1} / {2} {3}",
                    turn, cityCnt + 1, _cities.Count, prevAttack.Name));
            }
            else
            {
                prevDeffece = targets[targetIdx];
                prevDeffece.PaintDeffenceColor();
                info.ShowText(prevAttack.GetPosition(), string.Format("{0} turn {1} / {2} {3}\r\ntarget {4}",
                    turn, cityCnt + 1, _cities.Count, prevAttack.Name, prevDeffece.Name));
            }

            cityCnt++;
            if(cityCnt >= _cities.Count)
            {
                _cities = cityRandomReplace(_cities);
                cityCnt = 0;
                turn++;
            }
        }

隣接する都市を取得する処理は今までに作成しているので、メソッド1つで取り出せます。

その中から乱数で1つ都市を選択します。

ただし、何もしないターンもあるので、乱数の範囲を大きめにとって、配列より大きければ、何もしない、と扱います。