Привет, ребята я работаю на прологе игры, и мне нужно написать кусок кода, который будет:Пролог, если потом еще потерпит неудачу с предикатом член
- принять ряд (ArmyNo) от пользователя.
- Возьмите координату X
- Возьмите координату Y.
Тогда у меня есть список, который называется TempBoard и это выглядит следующим образом:
([
(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,-,-)
]).
, прежде чем я добавить (X, Y, W, ArmyNO) к списку я сначала хочу, чтобы проверить его если он уже существует.
Я пытался сделать это с помощью этого кода, но это, кажется, не работает должным образом:
%#######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
)
).
%%
Я думаю, что ваша проблема связана с заменой/3 ... Вы не предоставляете источник для этого и, по крайней мере, кажется, что отсутствует один аргумент ... например, что вы заменяете элемент? – gusbro