:- module(agent, [look/0, move/1, take/1]). look :- here(L), writeItemsAt(L), writeExits(L). move(D) :- here(L), connects(L,N,D), retract(here(L)), asserta(here(N)), !. take(T) :- here(L), itemAt(T,L), canTake(T), retract(itemAt(T,L)), asserta(holding(T)), write('Taken.'), !.