Bonjour tout le monde,

J'ai un petit souci pour faire l'équivalent d'un if en prolog. J'ai le prédicat suivant, qui doit permettre de bouger un bloc de coordonnées x, y, z aux coordonnées xn, yn, zn :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
bouger(ID, Xn, Yn, Zn) :- prenable(ID),
				  carreBas(ID, Lb), carreHaut(ID, Lh), hauteur(ID, H), position(ID, X, Y, Z), plateau(PlatX, PlatY), 
				  assert(position(ID, Xn, Yn, Zn)), retract(position(ID, X, Y, Z)),
				  ((estSurLePlateau(ID), neDepassePas(ID), pasIntersection(ID, _)) ;
				  (estSurUnAutre(ID, _), pasIntersection(ID, _))).
Je voudrais que si ce prédicat ne réussit pas, alors prolog m'exécute les actions suivantes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
assert(position(ID, X, Y, Z)), retract(position(ID, Xn, Yn, Zn)).
Je ne vois pas comment faire. J'ai essayé avec un ou exclusif, de redéfinir une règle, mais dès que je met le assert, ça me l'exécute que bouger réussisse ou non.

Si vous avez une idée pour mon problème ce serait très sympathique de m'aider.