If statement Prolog If-Then-Else使用成员谓词失败

If statement Prolog If-Then-Else使用成员谓词失败,if-statement,prolog,If Statement,Prolog,大家好,我正在编写一个prolog游戏,我需要编写一段代码,它将: 从用户处获取一个数字(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,-,

大家好,我正在编写一个prolog游戏,我需要编写一段代码,它将:

  • 从用户处获取一个数字(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
                 )
              ).
    
              %%
    

    无法与示例列表中的任何成员统一,因为
    w
    -
    不统一。您可能是指
    W

    我想您的问题在于替换/3。。。你没有提供它的来源,至少它似乎缺少一个参数。。。i、 e.您要用什么替换该项目?
    (X, Y, w, ArmyNo)