okolo(Typ):-
 not p_okolo(Typ).

p_okolo(s):-
 ook(s,_,D,S,_,Par,Sour,St), % Z==0 ... zajima nas to na zemi
 member(otevrit_c,Par), %2 dvere pridat pulku delky do sirky
 pred(St,Sour,D,S,NSour,ND,NS,2),
 asserta(ook(pom,pom,ND,NS,0,[],NSour,n)),
 fail.
 
p_okolo(s):-
 ook(s,_,D,S,_,Par,Sour,St), % Z==0 ... zajima nas to na zemi
 (member(otevrit_l,Par);member(otevrit_r,Par)), 
 pred(St,Sour,D,S,NSour,ND,NS,1),
 asserta(ook(pom,pom,ND,NS,0,[],NSour,n)),
 fail.
 
p_okolo(se):-
 ook(se,_,D,_,_,_,Sour,St),
 pred(St,Sour,D,20,NSour,ND,NS,1),
 asserta(ook(pom,pom,ND,NS,0,[],NSour,n)),
 fail.

p_okolo(d):- %to jako dvere
 dver(J,X,Y,S,St),
 pred(St,[X,Y,0],S,S,NSour,ND,ND,1),
 asserta(ook(pom,pom,ND,NS,0,[],NSour,n)),
 fail.
 
pred(n,[X,Y,_],D,S,[X,NY,0],D,NS,K):-
 NY is Y+S,NS is D/K.

pred(s,[X,Y,_],D,S,[X,NY,0],D,NS,K):-
 NY is Y-S,NS is D/K.

pred(w,[X,Y,_],D,S,[NX,Y,0],NS,D,K):-
 NX is X+S,NS is D/K.

pred(e,[X,Y,_],D,S,[NX,Y,0],NS,D,K):-
 NX is X-S,NS is D/K.
  
