Volatile memory

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

点数を数えよう。

一通り並べた。

並べたよ。以上。

なんか左下のあたりがスカスカでどうしたもんだろとか思いますが、

見た目じゃないんだ!

たぶん。

ゲームやる上では大して問題にならないに違いない。 きっとそうだ。問題になってから考えよう。

これをMNKDD(問題になってから考えよう駆動開発)と名付けます。 思いつきです。 流行るといいですね。

で、終わりにしとこうかと思ったんですけど、 ボタンを見たらコールバックを実装したくなるじゃないですか。 これも病気ですね。

とりあえず1ボタンを実装してみましょう。

1で計上するということは、その時点で出ている1の目の合計を1のスコアとするということです。

もうまったく初めての人に説明する気がないですね。

ちゃーん
ちゃかちゃかちゃーん
ちゃっちゃちゃん
ぽわんぽわんぽわん

説明しよう!
ヨットとは!
5つのサイコロに願いを込め、
その数を力に変えた戦いだ!

1のボタンは
1の目の合計で攻撃する、熱い技だぞ!

戦隊風にしてもわかんないもんはわかんないですね。早めに気づけばよかったです。

ビジネスロジック()的にはこうですね。

    public class Score
    {
        public int Value = 0;
        public bool Selected = false;

        public void Select(int value)
        {
            Value = value;
            Selected = true;
        }
        public void Reset()
        {
            Value = 0;
            Selected = false;
        }
    }

    public class Yacht
    {
        public Score OneScore = new Score();

        public void SelectOne()
        {
            OneScore.Select(Dice.Sum(die => die.Value == 1 ? 1 : 0));

            Reset();
        }
    }

Scoreは点数です。 選ばれた時に点数が決定されます。選ばれるまでは0点です。

Yachtは追加したとこだけ書いてます。 1の点数OneScoreと1を選ぶメソッドSelectOne()を実装します。 1になってるDiceの数だけ1を追加する感じで点数を設定して、リセットで残り回数を戻します。

ついでにこういうプロパティ(だっけ?)TotalScoreを定義します。 とりあえずOneScoreですが最終的には全部足します。

        public int TotalScore
        {
            get
            {
                return OneScore.Value;
            } 
        }

Formの方はOneButton押された時にこれを呼んでから画面更新します。 ResetButtonとだいたい同じですね。

    public partial class YachtForm : Form
    {
        private void OneButton_Click(object sender, EventArgs e)
        {
            Yacht.SelectOne();
            UpdateView();
            ResetView();
        }
    }

これで、3回サイコロを振って1をキープするとこうなって、

ここで1を押すと1に点数が入って合計も増えます。

うん、あと12個だ。