コード例 #1
0
        private CastlingState GetCastlingStateForRookMovement(Piece piece, Move move, CastlingState currentState)
        {
            var newCastlingState = new CastlingState
            {
                WhiteKingside  = currentState.WhiteKingside,
                WhiteQueenside = currentState.WhiteQueenside,
                BlackKingside  = currentState.BlackKingside,
                BlackQueenside = currentState.BlackQueenside
            };

            if (piece.Color == Color.White)
            {
                if (move.StartPosition.X == 0 && move.StartPosition.Y == 0)
                {
                    newCastlingState.WhiteQueenside = false;
                }
                else if (move.StartPosition.X == 7 && move.StartPosition.Y == 0)
                {
                    newCastlingState.WhiteKingside = false;
                }

                return(newCastlingState);
            }

            if (move.StartPosition.X == 0 && move.StartPosition.Y == 7)
            {
                newCastlingState.BlackQueenside = false;
            }
            else if (move.StartPosition.X == 7 && move.StartPosition.Y == 7)
            {
                newCastlingState.BlackKingside = false;
            }

            return(newCastlingState);
        }
コード例 #2
0
        private string GetCastlingStateFen(CastlingState state)
        {
            if (!state.WhiteKingside && !state.WhiteQueenside && !state.BlackKingside && !state.BlackQueenside)
            {
                return("-");
            }

            string output = "";

            if (state.WhiteKingside)
            {
                output += 'K';
            }

            if (state.WhiteQueenside)
            {
                output += 'Q';
            }

            if (state.BlackKingside)
            {
                output += 'k';
            }

            if (state.BlackQueenside)
            {
                output += 'q';
            }

            return(output);
        }
コード例 #3
0
        private CastlingState GetCastlingStateForKingMovement(Piece piece, CastlingState currentState)
        {
            if (piece.Color == Color.White)
            {
                return(new CastlingState
                {
                    WhiteKingside = false,
                    WhiteQueenside = false,
                    BlackKingside = currentState.BlackKingside,
                    BlackQueenside = currentState.BlackQueenside
                });
            }

            return(new CastlingState
            {
                WhiteKingside = currentState.WhiteKingside,
                WhiteQueenside = currentState.WhiteQueenside,
                BlackKingside = false,
                BlackQueenside = false
            });
        }