import asyncio import signal import logging from solenoids.BottomLeftBankSolenoid import BottomLeftBankSolenoid from solenoids.BottomRightBankSolenoid import BottomRightBankSolenoid from solenoids.TopCentralBankSolenoid import TopCentralBankSolenoid 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 :-)') self.is_running.release() async def run(self): logging.info('Starting game') await self.is_running.acquire() await self.input_handler.handleInputs() await self.is_running.wait()