使用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).
谢谢!
答案 0 :(得分:0)
析取是;
运算符:
?- false ; X=3.
X = 3.
考虑 if-else -如果false
则false
否则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(...).
...