title: Push or Pull? Turning keypresses into velocity for in-game vehicles
body: <p>Should I push keypresses to vehicles when they're pressed, or should vehicles pull keys pressed from the engine?</p>
  
  <p>I have a vehicle object, which has location, velocity and accelleration members (among other things) and an update method, during which it updates its location based on its velocity, and its vevlocity based on its accelleration.</p>
  
  <p>I have a game object which contains the game loop, which calls the update method on the vehicle.</p>
  
  <p>If the player controls the vehicle with the arrow keys, should a keypress set the accelleration (push) and a key-release clear the velocity, or should the vehicle ask the game-engine if the accellerate key is pressed (pull)?  I think a push would mean that the keyboard control module would need to know about vehicles, whereas pull would mean a vehicle needs to know specific keyboard controls.</p>
  
  <p>I think a related question would be something like: should all objects know about all other objects, or should there be a strict hierarchy, so objects can ask things / tell things to other objects up the tree, but not down (or vice-versa)?</p>