private void SetupBoard() { _myGame = new OthelloGame(); _minMaxAgent = new MinMaxAgent(); _boardPanels = new PiecePanel[OthelloGame.BOARD_SIZE, OthelloGame.BOARD_SIZE]; _currentViewedMove = 0; int tileSize = ((Size.Width > Size.Height) ? Size.Height - 45 : Size.Width - 45) / OthelloGame.BOARD_SIZE; for (int i = 0; i < OthelloGame.BOARD_SIZE; i++) { for (int j = 0; j < OthelloGame.BOARD_SIZE; j++) { var newPanel = new PiecePanel(new int[] { i, j }) { Size = new Size(tileSize, tileSize), Location = new Point(tileSize * i, tileSize * j) }; newPanel.MouseClick += new MouseEventHandler(OthelloPeice_Click); Controls.Add(newPanel); _boardPanels[i, j] = newPanel; Color panelcolor = Color.Red; if (BoardColorDictionary.BoardStateColors.TryGetValue(_myGame.GetBoard()[i, j], out panelcolor)) { _boardPanels[i, j].ReColor(panelcolor); } } } }
private void OthelloPeice_Click(object sender, MouseEventArgs e) { BoardStates player = e.Button == MouseButtons.Left ? BoardStates.black : BoardStates.white; try { PiecePanel thisPanel = (PiecePanel)sender; if (player != _myGame.WhosTurn) { if (player == BoardStates.white) { BlackMoveLabel.Visible = true; _twoSecondTimer.Elapsed += new System.Timers.ElapsedEventHandler(BlackMoveLabel_VisibilityFalse); _twoSecondTimer.Enabled = true; } else if (player == BoardStates.black) { WhiteMoveLabel.Visible = true; _twoSecondTimer.Elapsed += new System.Timers.ElapsedEventHandler(WhiteMoveLabel_VisibilityFalse); _twoSecondTimer.Enabled = true; } } _myGame.MakeMove(player, new byte[] { (byte)thisPanel.location[0], (byte)thisPanel.location[1] }); RefreshControls(); } catch { throw new NotSupportedException("OthelloPeice_Click is not to be used with a control other than a PiecePanel"); } GameCompletionProgressBar.Value = _myGame.GetMovesMade(); }