%------------------------------------------------------------------------------
:-compile('MoneyMazeController').
%------------------------------------------------------------------------------
%----Entry point
maze(FileName):-
    random(Seed),
    maze(FileName,Seed).

maze(FileName,Seed):-
    controller:read_maze(FileName,Seed),
    controller:my_state(square(X,Y,entrance),_),
    controller:draw_maze,
    walk_to_dead_end(square(X,Y,entrance)),
    controller:draw_maze,
    controller:my_state(square(X,Y,been_there),EndMoney),
    write('Back at the entrance with $'),
    write(EndMoney),
    nl.
%------------------------------------------------------------------------------
walk_to_dead_end(Entrance):-
%DEBUG     controller:draw_maze,
    report_my_state,
    controller:sense(N,S,W,E),
%DEBUG write('Sensed '),write([N,S,W,E]),nl,
%----Tries to go to a square with money, in order North,South,West,East.
    member([square(X,Y,Value)|_],[N,S,W,E]),
    integer(Value),
    !,
    controller:move(square(X,Y,Value)),
    walk_to_dead_end(Entrance).

walk_to_dead_end(Entrance):-
    controller:beam(Entrance).
%------------------------------------------------------------------------------
report_my_state:-
    controller:my_state(square(X,Y,_),Money),
    write('Current state: '),
    write(X),
    write(','),
    write(Y),
    write(' $'),
    write(Money),
    nl.
%------------------------------------------------------------------------------
