public Form1() { InitializeComponent(); yahtzee = new Yahtzee(); diceButtonWith = this.ClientRectangle.Width / (Yahtzee.GetNumberOfDice() + 1); buttonHeight = this.ClientRectangle.Height / (yahtzee.GetNumberOfScoreOptions() + 1 + buttonHeightLeftOver); diceToPutAway = new List <Dice>(); UpdateDice(); UpdateScoreOptionButtons(); UpdateRerollButton(); UpdateScoreBoard(); }
private void UpdateRerollButton() { if (rerollButton == null) { rerollButton = new Button(); rerollButton.Text = rerollButtonString; rerollButton.Click += new EventHandler(rerollButtonFunction); rerollButton.Location = new Point(diceButtonWith * Yahtzee.GetNumberOfDice(), 0); rerollButton.Width = diceButtonWith; rerollButton.Height = buttonHeight; } Controls.Remove(rerollButton); if (yahtzee.GetCanReroll()) { Controls.Add(rerollButton); } }
private void UpdateDice() { if (diceButtons == null && diceButtonFunctions == null && diceLabels == null) { diceButtons = new Button[Yahtzee.GetNumberOfDice()]; diceLabels = new Label[diceButtons.Length]; diceButtonFunctions = new ButtonFunction[diceButtons.Length]; Action <Object> diceButtonFunction = (Object dice) => { if (typeof(Dice).IsInstanceOfType(dice)) { bool found = false; for (int i = 0; i < diceToPutAway.Count; i++) { if (diceToPutAway[i] == dice) { for (int o = 0; o < diceButtons.Length; o++) { if (diceButtonFunctions[o].GetFunctionParameter() == dice) { diceButtons[o].Font = new Font(diceButtons[o].Font, FontStyle.Regular); } } diceToPutAway.RemoveAt(i); found = true; break; } } if (found == false) { for (int i = 0; i < diceButtons.Length; i++) { if (diceButtonFunctions[i].GetFunctionParameter() == dice) { diceButtons[i].Font = new Font(diceButtons[i].Font, FontStyle.Bold); } } diceToPutAway.Add((Dice)dice); } } else { throw new Exception("object given to the button function isn't of the type dice"); } }; for (int i = 0; i < diceButtons.Length; i++) { diceButtons[i] = new Button(); diceLabels[i] = new Label(); Point point = new Point(diceButtonWith * i, 0); diceButtons[i].Location = point; diceButtons[i].Width = diceButtonWith; diceButtons[i].Height = buttonHeight; diceLabels[i].Location = point; diceLabels[i].Width = diceButtonWith; diceLabels[i].Height = buttonHeight; diceButtons[i].Click += new EventHandler(UseDiceButton); diceButtonFunctions[i] = new ButtonFunction(diceButtons[i], diceButtonFunction, null); Controls.Add(diceButtons[i]); } } else if (diceButtons == null || diceButtonFunctions == null || diceLabels == null) { throw new Exception(exceptionUpdateDiceDoesntFullyExist); } else { yahtzee.Reroll(diceToPutAway.ToArray()); diceToPutAway.Clear(); for (int i = 0; i < diceButtons.Length; i++) { Controls.Remove(diceButtons[i]); diceButtons[i].Font = new Font(diceButtons[i].Font, FontStyle.Regular); Controls.Remove(diceLabels[i]); } } Dice[] rerollableDice = yahtzee.GetRerollableDice(); int[] nonRerollableDice = yahtzee.GetNonrerollableDice(); for (int i = 0; i < diceButtons.Length; i++) { if (i < rerollableDice.Length) { diceButtons[i].Text = "" + rerollableDice[i].GetDieValue(); diceButtonFunctions[i].SetFunctionParameter(rerollableDice[i]); Controls.Add(diceButtons[i]); } else { diceLabels[i].Text = "" + nonRerollableDice[i - rerollableDice.Length]; Controls.Add(diceLabels[i]); } } }