Thirty-two bricks, eight across and four down. Three balls to clear the wall — the paddle is 60 pixels wide and the ball does not forgive.
Collision is explicit axis-aligned bounding-box math. On contact the penetration depth of each axis is measured and the smaller one is resolved, which is what decides whether the ball flips dx or dy. Exactly one brick is destroyed per step — the closest candidate wins — and the ball is pushed clear of the tile so it can never nest inside the wall. Speed magnitude is renormalised after every bounce and clamped away from shallow angles.