Beispiel #1
0
        public virtual bool Move(int row, int column)
        {
            var destination = new Tuple <int, int>(row, column);
            var origin      = new Tuple <int, int>(Row, Column);
            var moveSet     = MoveStrategy.GetMoveSet(Row, Column, OpposingColor);
            var canMove     = !destination.Equals(origin) &&
                              moveSet.Any(t => t.Equals(destination)) &&
                              !ChessBoard.IsCheckedState(this, destination);

            if (canMove)
            {
                BeforeMove(destination);
                ChessBoard.Remove(Row, Column);
                HandleCapture(destination);
                MoveCount++;
                AfterMove();
                ChessBoard.AddReplace(this, destination.Item1, destination.Item2);
            }
            return(canMove);
        }