2016-11-20 55 views
0

爲什麼Probe不能執行?這不是整個程序,但應該有足夠的代碼來找到答案。是的,我已經在堆棧溢出中尋找答案,但對於Prolog沒有太大的幫助。它是掃雷遊戲的一部分。爲什麼不探測執行?

play :-  
    play(0). 

play(M) :- 
    N is M + 1, 
    Suf <- N, 
    display_board(visible), nl, 
    format("Your ~d~a move~n", [N,Suf]), 
    retrieve('Coordinates? ', [A,B]), 
    format("DEBUG: probing at coordinates [~d,~d]~n", [A, B]), 
    !, probe(A,B), 
    play(N). 


probe(X, Y) :- 
    write("enter probe"), 
    located_at(Who, X, Y, C), 
    C = 'b', 
    write('should probe '), 
    write('at ['), 
    write(X), write(','), write(Y), write(']'), nl. 
    :- style_check(+singleton). 

回答

1

讓我們退後一步,先嚐試找出:爲什麼程序甚至沒有編譯

當諮詢您發佈的程序,我得到:

 
ERROR: file.pl:6:6: Syntax error: Operator expected 

這是這行:這不是有效的Prolog語法

 
    Suf <- N 

因此,我建議先解決這個問題。

事實上,我得到進一步:

Warning: file.pl:14: Singleton variables: [Who]

這也不是一個好兆頭。但是ERROR更爲嚴重,妨礙整個條款的編制。

+0

它不編譯,因爲這不是整個文件。你想讓我包括完整的文件嗎? – Luke

+1

我最想做的是一個最小的例子,它可以準確地表明你想解決的問題!也就是說,理想情況下,您應該從文件中刪除與該問題無關的所有內容,幷包括清楚顯示該內容的那些部分。我建議你編輯答案以顯示文件的所有相關部分,並排除其餘部分。 – mat