Volatile memory

物覚えの悪いわたしの、備忘録的な技術系ブログです。

果てしないとあきらめてたらふと終わりが見えたり

ヨットの続きです。

例のとこのスコアを見ると、

kododigi.com

あれ?残りのやつって全部点数固定じゃん?

だったらそれ入れるだけじゃん?

あれ?もしかしてできちゃった?

そんな気がしたので一気にやります。 やってすぐ思ったのですが、ちゃんとチェックしないとずるし放題ですね。 そっちがめんどいです。

フルハウスの場合、3枚と2枚がないとだめなのでそれをチェックします。 で、例外が起こらなければ30点を入れるだけ。

        public void SelectFullHouse()
        {
            new List<int> { 1, 2, 3, 4, 5, 6 }.Single(n => Dice.Sum(s => s.Value == n ? 1 : 0) == 3);
            new List<int> { 1, 2, 3, 4, 5, 6 }.Single(n => Dice.Sum(s => s.Value == n ? 1 : 0) == 2);

            Select(FullHouseScore, 30);
        }

残りのも点数入れるとこは同じです。ヨットは5枚そろえばいいのでFourDiceとかと同じノリでいけます。

        public void SelectYacht()
        {
            new List<int> { 1, 2, 3, 4, 5, 6 }.Single(n => Dice.Sum(s => s.Value == n ? 1 : 0) == 5);

            Select(YachtScore, 50);
        }

難しいのはストレート系ですね。

ストレートに言っちゃえばこう。

        public void SelectSStraight()
        {
            var d1 = Dice.Any(s => s.Value == 1);
            var d2 = Dice.Any(s => s.Value == 2);
            var d3 = Dice.Any(s => s.Value == 3);
            var d4 = Dice.Any(s => s.Value == 4);
            var d5 = Dice.Any(s => s.Value == 5);
            var d6 = Dice.Any(s => s.Value == 6);

            if (((d1 && d2 && d3 && d4) || (d2 && d3 && d4 && d5) || (d3 && d4 && d5 && d6)) == false)
            {
                throw new Exception();
            }

            Select(SStraightScore, 30);
        }

だじゃれじゃないです。

さて、もしかしてひょっとして全部埋まった? これで晴れてヨットで遊べるのでしょうか?

わくわく。