Ejemplo n.º 1
0
        public void UndoMove(Position origin, Position destiny, ChessPiece capturedPiece)
        {
            ChessPiece cp = Chessboard.RemoveChessPiece(destiny);

            cp.DecrementQuantityMovements();
            if (capturedPiece != null)
            {
                Chessboard.ChessPiecePosition(capturedPiece, destiny);
                RemovedChessPieces.Remove(capturedPiece);
            }
            Chessboard.ChessPiecePosition(cp, origin);

            // #SpecialMove Small Castle
            if (cp is King && destiny.Column == origin.Column + 2)
            {
                Position   originR  = new Position(origin.Row, origin.Column + 3);
                Position   destinyR = new Position(origin.Row, origin.Column + 1);
                ChessPiece r        = Chessboard.RemoveChessPiece(destinyR);
                r.DecrementQuantityMovements();
                Chessboard.ChessPiecePosition(r, originR);
            }

            // #SpecialMove Big Castle
            if (cp is King && destiny.Column == origin.Column - 2)
            {
                Position   originR  = new Position(origin.Row, origin.Column - 4);
                Position   destinyR = new Position(origin.Row, origin.Column - 1);
                ChessPiece r        = Chessboard.RemoveChessPiece(destinyR);
                r.DecrementQuantityMovements();
                Chessboard.ChessPiecePosition(r, originR);
            }

            // #SpecialMove En Passant
            if (cp is Pawn)
            {
                if (origin.Column != destiny.Column && capturedPiece == VulnerableEnPassant)
                {
                    ChessPiece pawn = Chessboard.RemoveChessPiece(destiny);
                    Position   posP;
                    if (cp.Color == Color.White)
                    {
                        posP = new Position(3, destiny.Column);
                    }
                    else
                    {
                        posP = new Position(4, destiny.Column);
                    }
                    Chessboard.ChessPiecePosition(pawn, posP);
                }
            }
        }
Ejemplo n.º 2
0
 public void NewChessPiecePosition(char column, int row, ChessPiece chessPiece)
 {
     Chessboard.ChessPiecePosition(chessPiece, new ChessPosition(column, row).ToPosition());
     ChessPieces.Add(chessPiece);
 }