def __init__(self): # 0 additional arguments, self is self-reference pygame.init() # Renderer, handles rendering functions on behalf of the game rendererOptions = type('', (), {})() rendererOptions.width = 800 rendererOptions.height = 600 self.gameRenderer = Renderer(rendererOptions) # Renderer before GameState, since Spritesheet depends on display.set_mode # Game state object, tracks state of game and all objects in game self.gameState = GameState() # Example of tightly coupled code. # TODO: Refactor coupled code, separate dependencies self.gameRenderer.game = self.gameState # Internal variables to handle frame ticks/FPS self.clock = pygame.time.Clock() self.currentTime = 0 # Event Handler dictionaries self.keydownHandlers = defaultdict(list) self.keyupHandlers = defaultdict(list)