序言|错误之后可以继续执行吗?

时间:2018-12-02 23:05:06

标签: prolog

使用prolog,我可以在一行返回false之后继续执行吗?

我必须创建一个井字游戏。我想在每个玩家回合后检查获胜状态。

checkwin在存在获胜状态时返回true,否则返回false。然后的问题是,在返回false之后,我无法继续进行下一个玩家的移动。

如何在每个转弯处检查它,并继续执行检查后的代码?有没有办法“如果错误继续”?

adjustGame(PosX, PosY, Gameboard, Token) :-
    update(PosX, PosY, Gameboard, Newboard, Token),
    display(Newboard),
    checkwin(Newboard,Token),% This is false until the game has a winner
    play(Newboard,Token).    % but I want to execute this line until then

checkwin([A,B,C,D,E,F,G,H,I],T) :-
    same(A,B,C,T);
    same(D,E,F,T);
    same(G,H,I,T);
    same(A,D,G,T);
    same(B,E,H,T);
    same(C,F,I,T);
    same(A,E,I,T);
    same(C,E,G,T).

same(X,X,X,X).

谢谢!

1 个答案:

答案 0 :(得分:0)

析取是;运算符:

?- false ; X=3.
X = 3.

考虑 if-else -如果falsefalse否则X=3

?- true ; X=3.
true

?- check_win(...) ; play_game(...).
... 

还有一个完整的 if-then-else

?- true -> X=4 ; X=3. 
X = 4.

?- false -> X=4 ; X=3.
X = 3.

?- check_win(...) -> writeln("WIN"); play_game(...).
...