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 :
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
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 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part assert(position(ID, X, Y, Z)), retract(position(ID, Xn, Yn, Zn)).
Si vous avez une idée pour mon problème ce serait très sympathique de m'aider.
Partager