Bonjour les gars, je travaille sur un jeu de Prolog et je dois écrire un morceau de code qui:Prolog Si Then Else échoue avec membre prédicats
- Prenez un numéro (ArmyNo) de l'utilisateur.
- Prendre une coordonnée X
- Prendre une coordonnée Y.
J'ai une liste qui est nommé TempBoard et il ressemble à ceci:
([
(1,1,-,-),(1,2,-,-),(1,3,-,-),(1,4,-,-),
(2,1,-,-),(2,2,-,-),(2,3,-,-),(2,4,-,-),
(3,1,-,-),(3,2,-,-),(3,3,-,-),(3,4,-,-),
(4,1,-,-),(4,2,-,-),(4,3,-,-),(4,4,-,-)
]).
avant d'ajouter ceci (X, Y, w, ArmyNO) à la liste Je veux d'abord le vérifier si c'est déjà là.
J'ai essayé de le faire en utilisant ce code mais il ne semble pas fonctionner correctement:
%#######Got the number####
repeat,
%Get Cordinates X & Y.
writelist([TempBoard,'select coordinates for the horizontal axis 1 to 4 to place your soldier Mr. Human',nl]),
read(X),
writelist(['select coordinates for the vertical axis 1 to 4 to place your soldier Mr. Human',nl]),
read(Y),
%Check if they are in the list.
(
member((X,Y,w,ArmyNo),TempBoard) ->
( replace((X,Y,w,ArmyNo),TempBoard,NewBoard)) ;
(
writelist(['selected positions are not available in the table Mr.Human',nl]) , fail
)
).
%%
Je pense que votre problème est avec remplacer/3 ... Vous ne fournissez pas la source pour cela et au moins il semble qu'il manque un argument ... c'est-à-dire avec quoi remplacez-vous l'élément? – gusbro