1/* * module * 
    2% This is a *very* simple example of an agent for
    3% the vacuum cleaner example world.
    4%
    5% Maintainers: Douglas Miles/Annie Ogborn/Kino Coursey
    6% Contact: $Author: dmiles $@users.sourceforge.net ;
    7*/
    8
    9% Declare the module name and the exported (public) predicates.
   10:-swi_module(mobVacuum,[]).   11
   12% Predicates asserted during run.
   13% :- dynamic memory/2.
   14
   15:- include(prologmud(mud_header)).   16% :- register_module_type (planning).
   17
   18% Possible agent actions.
   19
   20tCol(mobVacuum).
   21tCol(mobVacuum).
   22
   23world_agent_plan(_World,Agent,Act):-
   24   isa(Agent,mobVacuum),
   25   vacuum_idea(Agent,Act).
   26
   27vacuum_idea(Agent,actTake(tPowerOutlet)) :-
   28	mudEnergy(Agent,Charge),
   29	Charge < 490,
   30	mudNearBody(Agent,What),
   31	member(tPowerOutlet,What).
   32vacuum_idea(Agent,actTake(tDirt)) :-
   33	mudNearBody(Agent,What),
   34	member(tDirt,What).
   35vacuum_idea(Agent,actMove(Dir)) :-
   36	mudEnergy(Agent,Charge),
   37	Charge < 200,
   38	mudGetPrecepts(Agent,List),
   39	list_object_dir_sensed(_,List,tPowerOutlet,Dir),
   40	number_to_dir(N,Dir,vHere),
   41	nth1(N,List,What),
   42	(What == [];
   43	    What == [tDirt];
   44	    What == [tPowerOutlet]).
   45vacuum_idea(Agent,actClimb(Dir)) :-
   46	mudEnergy(Agent,Charge),
   47	Charge < 200,
   48	mudGetPrecepts(Agent,List),
   49	list_object_dir_sensed(_,List,tPowerOutlet,Dir),
   50	number_to_dir(N,Dir,vHere),
   51	nth1(N,List,What),
   52	(What == [tLowBox];
   53	    What == [tLowWall]).
   54vacuum_idea(Agent,actMove(Dir)) :-
   55	mudGetPrecepts(Agent,List),
   56	list_object_dir_sensed(_,List,tDirt,Dir),
   57	number_to_dir(N,Dir,vHere),
   58	nth1(N,List,What),
   59	(What == [];
   60	What == [tDirt];
   61	What == [tPowerOutlet]).
   62vacuum_idea(Agent,actClimb(Dir)) :-
   63	mudGetPrecepts(Agent,List),
   64	list_object_dir_sensed(_,List,tDirt,Dir),
   65	number_to_dir(N,Dir,vHere),
   66	nth1(N,List,What),
   67	(What == [tLowBox];
   68	    What == [tLowWall]).
   69
   70vacuum_idea(Agent,Act) :- move_or_sit_memory_idea(Agent,Act,[tPowerOutlet]).
   71
   72
   73
   74
   75
   76:- include(prologmud(mud_footer)).