import asyncio import signal import logging import sys class Game: def __init__(self, input_handler, events, game_state): self.input_handler = input_handler self.events = events self.game_state = game_state signal.signal(signal.SIGINT, self.interrupt) self.is_running = asyncio.Condition() def interrupt(self, _, __): logging.info('Received SIGINT. Stopping Game :-)') sys.exit(0) async def run(self): logging.info('Starting game') await self.is_running.acquire() await self.input_handler.handleInputs() await self.is_running.wait()