class Game: _instance = None def __new__(cls, *args, **kwargs): if not Game._instance: Game._instance = object.__new__(cls) return Game._instance def __init__(self): self.entity_manager = EntityManager() self.message_dispatcher = MessageDispatcher() def add_entity(self, entity): self.entity_manager.register_entity(entity) entity.game = self def update(self): for entity in self.entity_manager: entity.update() self.message_dispatcher.dispatch_delayed_messages()