ヨットの続きです。
1だけ作って寝て起きたら、 2から6も同じだと気づきますよね。
なんで寝る前に気づかないんでしょうね?
1のとこをこうしたらもう明らかですよね。
public void SelectNumber(Score score, int n) { score.Select(Dice.Sum(die => die.Value == n ? n : 0)); Reset(); } public void SelectOne() { SelectNumber(OneScore, 1); }
こんな感じで他も書けます。
public void SelectTwo() { SelectNumber(TwoScore, 2); }
こういうものを定義したら、
NumberScores = new Score[] { OneScore, TwoScore, ThreeScore, FourScore, FiveScore, SixScore, };
こういうのが簡単にかけます。
public int NumberTotalScore { get { return NumberScores.Sum(s => s.Value); } } public int BonusScore { get { return NumberTotalScore >= 63 ? 35 : 0; } } public int TotalScore { get { return NumberTotalScore + BonusScore; } } public void End() { Reset(); foreach (var s in NumberScores) { s.Reset(); } }
Formの方もこういうのを定義して、
NumberScoreLabels = new Label[] { OneScore, TwoScore, ThreeScore, FourScore, FiveScore, SixScore, };
表示の更新をこんなふうに書けます。
private void UpdateView() { //中略 RestLabel.Text = Yacht.Rest.ToString(); for (int i = 0; i < Yacht.NumberScores.Length; ++i) { NumberScoreLabels[i].Text = ToScoreString(Yacht.NumberScores[i]); } BonusScore.Text = Yacht.BonusScore.ToString(); TotalScore.Text = Yacht.TotalScore.ToString(); }
1から6まで選んでみました。 ちゃんとボーナス入ってます。
これで1から6までできました。 ボーナスも表示されます。