If you need help playing the game, read the half screen of information that comes
up when the game begins.  That being said, this isn't really a game for players
so much as a toy for beginning game programmers.

Straight from the top block comment in the jacks.cpp file within the source folder:
-----------------------------------------------------------------------------------
///////// Educational Jacks/Hoops/TargetPass Engine 0.4 ///////////
AUTHOR: Chris DeLeon
EDITED BY: [add your name here]
CREATED FOR: Game Creation Society
DEVELOPMENT TIME: One night
CREATED IN: Dev-C++ 4 with Allegro
  For help on getting this environment configured, see:
  http://www.allegro.cc/files/install-devcpp.html
LAST UPDATED: 6:00 pm Central Time, July 20, 2004
PURPOSE: Sample of basic game physics programming, displayed using Allegro
GAME:
  This is a basic ball bouncing engine, in which the player interacts
by using the mouse to control a simple pseudo-3D arm.  It's set up for
playing jacks, shooting hoops, and passing at a moving target.

Suggested modifications:

ENGINE ADVANCEMENTS: Important practice in the technical side
-Flexible gameplay variables
  Alter the game so that gameplay physics constants and locations are loaded
  from the settings.ini file, instead of using hard coded defines.  See jacks.h
  for the variables that affect gravity, ball size, bounce speed, and hoop height.
  Replace these with globally available integers (or package them all in one nice
  struct/class) and load them at run-time from their own section of the ini file.
  This is the first step in writing games that non-technical designers on the team
  can participate in developing, beyond a conceptual level.
-More realistic physics
  Perhaps when the hand brushes against jacks, or the ball bounces on them, the
  jacks should jump and roll.  Or maybe the ball should be able to bank off the rim.
  What are some ways this could be coded flexibly and efficiently?  Implement!

GAMEPLAY CHANGES: Important practice on the conceptual side
-Scoring goals (X number of jacks, hoops, and/or passing targets for Y amount of
  throws or bounces) and a level format, to give the game purpose and challenge.
  Begin by hard coding a level or two to see what variables distinguish one level
  from another, then challenge yourself to soft code and load these variables
  from a data file - either settings.ini or another level.ini file.  It would
  follow that once a level structure is in place, some minor reward screen/animation
  would be in order for completing the game.
-Simple save game feature.  A game of this nature really doesn't justify a save/load
  feature, but it's good practice and easy to do.  Just export all important
  variables to an ini file of choice, and then load them back on demand.
-Enemies
  Maybe there's a bouncing obstacle that blocks your basketball goals, or a more 
  complicated entity that runs around scrambling your jacks and jumps to swat your
  free throws.  A second player could even use the keyboard to attempt to interfere
  with the player's goals, wherein the players switch roles to keep matches fair.

BELLS AND WHISTLES: Important practice on the presentation
-Bitmapped graphics
  The game could use a background image, ground, basketball hoop, real jack images,
  and a bouncy ball.  Replacing the arm and hand with bitmapped graphics requires
  a little more creativity, but there are plenty of interesting ways to get it done.
-Flashy graphical effects
  Screen transitions, particle effects of dust and sparks, a ball that stretches
  when it bounces... these won't make or break a game, but they're nice.
-Sound effects
  Add sfx during events that score numbers, like swishing hoops and boinging bounces
-Title/Menu screen
  Allow the player to adjust the game's ini variables, game physics options, and
  gameplay modes through either a keyboard based text menu, or a mouse GUI.

ANYTHING ELSE: As important as anything I've listed
-Use your imagination.  I stake no claim on this code; make it into a game of your own!
