% $Id: agent.pl,v 1.2 2006/11/12 19:43:31 ioerger Exp $ :- ensure_loaded(wumpus). % load wumpus.pl :- dynamic action/2,holding/1. my_reset :- retractall(action(_,_)), retractall(holding(_)), reset. go(0). go(N) :- decide(Action), format("~ndoing: ~w~n",[Action]), my_do(Action), M is N-1, go(M). my_do(Action) :- now(X), remember_holding_gold(Action), assert(action(Action,X)), do(Action). decide(pickup(gold)) :- glitter,\+ holding(gold). decide(A) :- pick_random_action(A). actions([forward,turn(left),turn(right)]). pick_random_action(Action) :- actions(Actions), length(Actions,L), X is random(L), Y is X+1, nth(Actions,Y,Action). remember_holding_gold(pickup(gold)) :- glitter, assert(holding(gold)),!. remember_holding_gold(_). % succeed trivially in all other cases