コード例 #1
0
        private void InitializeChessboardBoxesArea()
        {
            panelChessBoard.Controls.Clear();
            boxUserControls = new BoxUserControl[9, 9];

            for (var row = 1; row < 9; row++)
            {
                for (var column = 1; column < 9; column++)
                {
                    boxUserControls[row, column]          = new BoxUserControl(chessboard[row, column]);
                    boxUserControls[row, column].Click   += BoxClick;
                    boxUserControls[row, column].Location = new Point
                    {
                        X = (column - 1) * 64,
                        Y = (8 - row) * 64
                    };
                    panelChessBoard.Controls.Add(boxUserControls[row, column]);
                }
            }
        }
コード例 #2
0
        private async void BoxClick(object sender, EventArgs e)
        {
            if (chessboard.RetakingIsActive || chessboard.CurrentTurn != playerTurn)
            {
                return;
            }

            var clickedBox = (BoxUserControl)sender;

            if (firstClickedBox == null && clickedBox.Piece != null && playerTurn == clickedBox.Piece.Color)
            {
                var boxPosition = clickedBox.Position;

                clickedBox.Box.Piece.CheckPossibilitiesForProvidedLocationAndMarkThem(chessboard, boxPosition);
                SetChessboardBoxesColors();

                if (clickedBox.Box.Piece.CanMove)
                {
                    firstClickedBox = clickedBox;
                }
            }

            else if (firstClickedBox != null)
            {
                if (clickedBox == firstClickedBox)
                {
                    chessboard.SetChessboardBoxesAsUnavailable();
                    SetChessboardBoxesColors();
                    firstClickedBox = null;
                }

                else if (clickedBox != firstClickedBox && clickedBox.Available)
                {
                    MovePiece(firstClickedBox.Box, clickedBox.Box);
                    firstClickedBox = null;
                    RedrawChessboardBoxes();
                }
            }
        }
コード例 #3
0
 private bool ShouldHighlightBoxAsAvailable(BoxUserControl boxUserControl)
 {
     return(boxUserControl.Box.Available && HighlightAvailableMoves);
 }