def step(self, agent_index): ant = self.ants[agent_index] rule = self.rules[agent_index] current_state = self.get_cell_state(ant.x, ant.y) state, dx, dy = Rules.get_move(rule, current_state, ant.dx, ant.dy) if self.is_valid(ant.x + dx, ant.y + dy): ant.dx = dx ant.dy = dy self.set_cell(ant.x, ant.y, state) ant.x += dx ant.y += dy