Exemplo n.º 1
0
 /// <summary>
 /// Specifically For en-passant
 /// (need to remove the pawn which is currently in the opposite direction)
 /// </summary>
 /// <param name="destination"></param>
 public override void HandleCapture(Tuple <int, int> destination)
 {
     if ((destination.Equals((MoveStrategy as PawnAdapterStrategy).DiagonalLeft) || destination.Equals((MoveStrategy as PawnAdapterStrategy).DiagonalRight)) &&
         ChessBoard.GetPiece(destination.Item1, destination.Item2) == null)
     {
         ChessBoard.Remove(destination.Item1 + (Direction * -1), destination.Item2);
     }
 }
Exemplo n.º 2
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);
        }