Technically works, horrifies me.

Ok, so I pretty much exactly followed the steps outlined in the
exercise. And having gotten a working program out of it, I've decided I
misinterpreted the "data representation for the ball" step because
there's no way they want this structure-in-a-structure mess in my cond
statements later. There has to be a more readable way.