class Simulation: def __init__(self): agent_to_display = Queue( ) # For agent to signal its actions to the display agent_to_env = Queue( ) # for agent to signal its actions to the environment env_to_agent = Queue( ) # for environment to signal its mutations to the agent env_to_display = Queue( ) # for environment to signal its mutations to the display display_to_agent = Queue( ) # Only used for display to tell agent to switch mode (informed/uninformed) self.agent = Agent(env_to_agent, agent_to_env, agent_to_display, display_to_agent) self.env = Environment(deepcopy(self.agent.get_position()), agent_to_env, env_to_agent, env_to_display) self.display = Display(deepcopy(self.agent.get_position()), env_to_display, agent_to_display, display_to_agent) self.display.add_label("Environment") self.display.add_grid(self.env.get_grid()) self.display.add_switch( ) # For switching between informed and uninformed search self.env.start() self.agent.start() self.display.start_loop() # (blocking method)
def draw(self): Disp.add_label(self._name) Disp.add_slider('R', 12, 0, 255, Config.red(), 3, self._changed_r, self._focused) Disp.add_slider('G', 12, 0, 255, Config.green(), 3, self._changed_g, self._focused) Disp.add_slider('B', 12, 0, 255, Config.blue(), 3, self._changed_b, self._focused) Disp.add_slider('Brt', 12, 0, 100, Config.brightness(), 2, self._changed_brt, self._focused) Disp.add_slider('Wdt', 12, 0, LED_COUNT, Config.width(), 2, self._changed_wdt, self._focused) Disp.add_slider('Off', 12, -LED_COUNT // 2, LED_COUNT // 2, Config.offset(), 1, self._changed_off, self._focused) super(ManualRGB, self).draw()