Use Cases

dt timestep

Check for user input (see User Input for more information)
Detect Collisions
Update position of ball and mule
Re-draw screen

User Input

Left and right arrow keys rotate camera around ball
Up and down arrow keys zoom camera in and out respectively
Right mouse button starts the swing. Right mouse button again stops the swing at the currently indicated power.
Left mouse button rotates club around the ball

Mule Eats Ball

When the ball comes into contact with the mule one of two things could happen:
50% of the time the ball will be shat over the fence towards the hole
The other 50% of the time the ball will be shat over the fence towards the starting location
Extra speed is added to the ball's motion by the mule

Hit the Ball in the Hole

User hits the ball in the hole
Congratulatory message is displayed, indicating score

Ball Hits Fence

Ball deflects back using angle in = angle out physics
No speed is lost

Ball Hits Hay Bale

Ball deflects back using angle in = angle out physics
Speed of ball is decreased signifigantly