2016-11-20 8 views
0

Почему Probe не выполняется? Это не вся программа, но для получения ответа достаточно кода. Да, я уже просматривал Stack Overflow для ответа, но 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 

Это линия, которая говорит:

 
    Suf <- N 

Это не действительный синтаксис Пролога.

Поэтому я предлагаю исправить это первым.

На самом деле, я также получаю:

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

Это тоже не очень хороший знак. Но ERROR более суровый, предотвращая компиляцию всего предложения.

+0

Он не компилируется, потому что это еще не весь файл. Вы хотите, чтобы я включил полный файл? – Luke

+1

Что мне больше всего нравится, это минимальный пример, который точно отражает проблему, которую вы хотите решить! То есть, в идеале, вы должны удалить все из файла, который не имеет особого отношения к проблеме, и включить те части, которые его явно демонстрируют. Я предлагаю вам отредактировать ответ, чтобы показать все соответствующие части файла, и исключить остальные. – mat

Смежные вопросы