Added an introduction and corrected the Ball's isIllegalMove logic