http://eli.thegreenplace.net/2009/02/13/writing-a-game-in-python-with-pygame-part-iv/