Пример #1
0
        public void RemakePlay(Position origin, Position destination, Piece capturedPiece)
        {
            Piece p = Board.RemovePiece(destination);

            p.DecreaseMovement();
            if (capturedPiece != null)
            {
                Board.PutPiece(capturedPiece, destination);
                _capturedPiece.Remove(capturedPiece);
            }

            Board.PutPiece(p, origin);

            //#smallRoque

            if (p is King && destination.Column == origin.Column + 2)
            {
                Position originR      = new Position(origin.Line, origin.Column + 3);
                Position destinationR = new Position(origin.Line, origin.Column + 1);
                Piece    R            = Board.RemovePiece(destinationR);
                R.DecreaseMovement();
                Board.PutPiece(R, originR);
            }

            //#bigRoque

            if (p is King && destination.Column == origin.Column - 2)
            {
                Position originR      = new Position(origin.Line, origin.Column - 4);
                Position destinationR = new Position(origin.Line, origin.Column - 1);
                Piece    R            = Board.RemovePiece(destinationR);
                R.DecreaseMovement();
                Board.PutPiece(R, originR);
            }

            //#EnPassant

            if (p is Pawn)
            {
                if (destination.Column != origin.Column && capturedPiece == VulnerableEnPassant)
                {
                    Piece    pawn = Board.RemovePiece(destination);
                    Position posP;
                    if (p.Color == Colors.White)
                    {
                        posP = new Position(3, destination.Column);
                    }
                    else
                    {
                        posP = new Position(4, destination.Column);
                    }
                    Board.PutPiece(pawn, posP);
                }
            }
        }