Esempio n. 1
0
class ControloDelib(Controlo):

    def __init__(self):
        self._crencas = ModeloMundo()
        self._desejos = None
        self._intencoes = None

    def processar(self, percepcao):
        self._actualizar_crencas(percepcao)
        if self._reconsiderar():
            self._deliberar()
            self._planear()
        return self._executar()

    def _actualizar_crencas(self, percepcao):
        self._crencas.actualizar(percepcao)

    def _reconsiderar(self):
        abstract

    def _deliberar(self):
        self._desejos = self._gerar_opcoes()
        if self._desejos:
            self._intencoes = self._seleccionar_opcoes()
        else:
            self._intencoes = []

    def _planear(self):
        abstract

    def _executar(self):
        abstract

    def _gerar_opcoes(self):
        return self._crencas.pos_alvos()

    def _seleccionar_opcoes(self):
        return self._desejos