コード例 #1
0
        public void undoMove(Position origin, Position destination, Piece capturedPiece)
        {
            Piece p = board.removePiece(destination);

            p.decreaseMovementNumber();
            if (capturedPiece != null)
            {
                board.placeApiece(capturedPiece, destination);
                captured.Remove(capturedPiece);
            }
            board.placeApiece(p, origin);

            // #jogadaespecial roque pequeno
            if (p is King && destination.column == origin.column + 2)
            {
                Position originT       = new Position(origin.line, origin.column + 3);
                Position destinastionT = new Position(origin.line, origin.column + 1);
                Piece    T             = board.removePiece(destinastionT);
                T.decreaseMovementNumber();
                board.placeApiece(T, originT);
            }

            // #jogadaespecial roque grande
            if (p is King && destination.column == origin.column - 2)
            {
                Position originT       = new Position(origin.line, origin.column - 4);
                Position destinastionT = new Position(origin.line, origin.column - 1);
                Piece    T             = board.removePiece(destinastionT);
                T.decreaseMovementNumber();
                board.placeApiece(T, originT);
            }

            // #jogadaespecial en passant
            if (p is Pawn)
            {
                if (origin.column != destination.column && capturedPiece == enPassantVulnerable)
                {
                    Piece    peao = board.removePiece(destination);
                    Position posP;
                    if (p.color == Color.WHITE)
                    {
                        posP = new Position(3, destination.column);
                    }
                    else
                    {
                        posP = new Position(4, destination.column);
                    }
                    board.placeApiece(peao, posP);
                }
            }
        }