% Dinko Korunic, kreator@srk.fer.hr % Tue Jan 22 13:55:09 CET 2002 % vim: set syntax=off:ts=2:sw=2: :- module(percept,[ percept_create/6, percept_print/1, percept_stench/1, percept_breeze/1, percept_glitter/1, percept_bump/1, percept_scream/1]). :-use_module('world.pl'). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % creation percept_create(World,I,J,Bump,Scream,Percept):- world_get_symbols(P,WA,WD,G,A), percept_check(World,I,J,WA,stench,[],P1), percept_check(World,I,J,P,breeze,P1,P2), percept_check_gold(World,I,J,G,P2,P3), percept_check(Bump,bump,P3,P4), percept_check(Scream,scream,P4,Percept). % provjera "vanjskih" podrazaja kao bump i scream percept_check(B,X,Percept,Percept1):- B==yes, select(X,Percept1,Percept),!; Percept1=Percept. % provjera podraza u svijetu percept_check(World,I,J,X,B,Percept,Percept1):- (I1 is I+1, world_get(World,I1,J,Lista), member(X,Lista); I1 is I-1, world_get(World,I1,J,Lista), member(X,Lista); J1 is J+1, world_get(World,I,J1,Lista), member(X,Lista); J1 is J-1, world_get(World,I,J1,Lista), member(X,Lista)), select(B,Percept1,Percept),!; Percept1=Percept. % provjera podrazaja za zlato (X:Y) percept_check_gold(World,I,J,G,Percept,Percept1):- world_get(World,I,J,Lista), member(G,Lista), select(glitter,Percept1,Percept),!; Percept1=Percept. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % operations percept_stench(P):- member(stench,P). percept_breeze(P):- member(breeze,P). percept_glitter(P):- member(glitter,P). percept_bump(P):- member(bump,P). percept_scream(P):- member(scream,P). percept_print(P):- print(P), nl. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % test driver goal:- world_create(W), world_print(W), between(1,4,I), between(1,5,J), percept_create(W,I,J,no,no,P), write('Perception at ('), write(I:J), write('): '), percept_print(P), I=4, J=5.