示例#1
0
        public Result TryMakeMove(MoveCommand move)
        {
            var error = Rules.Select(r => r.Validate(Board, move)).FirstOrDefault(r => !r.IsValid);

            if (error is object)
            {
                return(Result.Error(error.Message));
            }

            var record = Board.ApplyMoveCommand(move);

            History.Add(record);
            if (CurrentPlayer == Color.White)
            {
                CurrentPlayer = Color.Black;
            }
            else
            {
                CurrentPlayer = Color.White;
            }

            return(Result.Ok);
        }