@use Control. @use SistemaAutonomo. Controller SistemaAutonomoController. Control : SistemaAutonomoController { + to init: teorias (list). sa (object). teoria (object). entorno (hash). datos-finales (hash). print "Llena entorno". entorno{"sensor"} = 0. entorno{"movido"} = 0. print "Crea Sistema autónomo". sa = new SistemaAutonomo. print "Crea Teorías". teorias = 2 new Teorias. teorias{0} init named "t1" with-action "avanza". (teorias{0}) set-dato-inicial name "sensor" value 0. (teorias{0}) set-dato-inicial name "movido" value -3000000. (teorias{0}) set-dato-final name "sensor" value -3000000. (teorias{0}) set-dato-final name "movido" value 1. teorias{1} init named "t2" with-action "retrocede". (teorias{1}) set-dato-inicial name "sensor" value 1. (teorias{1}) set-dato-inicial name "movido" value -3000000. (teorias{1}) set-dato-final name "sensor" value -3000000. (teorias{1}) set-dato-final name "movido" value 1. print "Agrega teorías al sistema autónomo". sa add teoria (teorias{0}). sa add teoria (teorias{1}). print "Actualiza entorno". sa update-entorno entorno entorno. print "Ponemos condición final esperada para el plan". datos-finales{"movido"} = 1. sa update-datos-finales datos-finales datos-finales. print "Calcula el plan". sa plan. print "Vemos si tiene una teoría más". while (sa has-next-theory): { print "Sí, tiene". print "Obtiene próxima teoría". teoria = sa get-next-theory. print "Obtiene datos de la teoría teoría". print(teoria get-nombre). print(teoria get-accion). if ((teoria get-accion) == "avanza"): { entorno{"sensor"} = 1. entorno{"movido"} = 1. } if ((teoria get-accion) == "retrocede"): { entorno{"sensor"} = 0. entorno{"movido"} = 1. } print "Valida teoría". sa update-entorno entorno entorno. if (sa validate theory teoria): { print "valida". } else { print "Teoria no valida, salimos". } print "Vemos si tiene una teoría más". } print "No, no tiene". free teorias{0}. free teorias{1}. free sa. }