pulled common game code into an abstract class, modified the client a little

x really should be horizontal, and y should be vertical, anything else
is just plain wrong