def estados(self, elem = None): estados = [] ligacoes_ordenadas = [] if elem == 'base': ligacoes_ordenadas = self.obter_ligacoes_ordenadas((19, 19)) else: ligacoes_ordenadas = self.obter_ligacoes_ordenadas(self.estado_agente()) for grupo_ligacoes in ligacoes_ordenadas: for ligacoes in grupo_ligacoes.values(): centro_anterior = grupo_ligacoes.keys()[0] for centro in ligacoes: area = self.area(centro) estados_dentro_area = [] for (s, e) in self.elementos.items(): if areas_lig_tp.interior(s, area) and (e is None or e == elem): estados_dentro_area.append(s) criterio_seleccao = lambda estado: psa.util.dist(centro_anterior, estado) estados_dentro_area = sorted(estados_dentro_area, key=criterio_seleccao) estados.extend(estados_dentro_area) return estados
def estado_abs(self, estado): for (centro, area) in areas_lig_tp.obter_areas().items(): if areas_lig_tp.interior(estado, area): return centro return None
def area(self, estado): for (_, area) in areas_lig_tp.obter_areas().items(): if areas_lig_tp.interior(estado, area): return area return None