Ejemplo n.º 1
0
        public void MakeRoque(ChessBoard board, ChessFigure king, int moveNumber)
        {
            ChessField kingNewField, rookNewField;

            if (Color == Color.WHITE)
            {
                kingNewField = CurrentField.Column == 'A' ? board.GetField(1, 'C') : board.GetField(1, 'G');
                rookNewField = CurrentField.Column == 'A' ? board.GetField(1, 'D') : board.GetField(1, 'F');
            }
            else
            {
                kingNewField = CurrentField.Column == 'A' ? board.GetField(8, 'C') : board.GetField(8, 'G');
                rookNewField = CurrentField.Column == 'A' ? board.GetField(8, 'D') : board.GetField(8, 'F');
            }

            ChessMove kingMove = new ChessMove(Color, moveNumber, king, null, king.CurrentField, kingNewField, true);

            king.PreviousMoves.Add(kingMove);
            ChessMove move = new ChessMove(Color, moveNumber, this, null, CurrentField, rookNewField, true);

            PreviousMoves.Add(move);

            board.EmptyField(king.CurrentField);
            board.EmptyField(CurrentField);
            board.OccupyField(kingNewField.Row, kingNewField.Column, Color);
            board.OccupyField(rookNewField.Row, rookNewField.Column, Color);
            king.CurrentField = kingNewField;
            CurrentField      = rookNewField;
            king.FindFieldsToMove(board);
            FindFieldsToMove(board);
        }