Как отключить" true "и" false " выходы в прологе?
Я хотел бы написать небольшую текстовую приключенческую игру, используя Пролог (это может быть глупая идея, но я здесь не для того, чтобы это обсуждать).
единственная проблема заключается в том, что я не могу печатать текст на экране без "true" и "false" значения, чтобы появиться, а также.
например, если я попробую что-то вроде:
take(desk) :- write('This thing is way too heavy for me to carry!').
здесь take
является предикатом одного места и desk
имя, которое я получаю в качестве вывода:
?- take(desk).
This thing is way too heavy for me to carry!
true.
как я могу избавиться от этого "true" или "false" выходы?
просто чтобы упомянуть, что я также пытался с format/1
один предикат места для простого вывода текста, а также format/2
два предиката места (когда я хочу вывести имя переменной), но это дает точно такую же проблему.
Я тоже видел ответ но, во-первых, это недостаточно подробно (по крайней мере, не для кого-то вроде меня), а во-вторых, я надеюсь, что в глубине души есть более простой способ сделать это.
и наконец, я использую SWI-Prolog.
спасибо.
1 ответов
упрощенным методом было бы создать немного REPL (чтение, оценка, цикл печати) самостоятельно. Что-то вроде этого:--11-->
game :-
repeat,
write('> '),
read(X),
call(X),
fail.
это просто предложит и выполнит все, что вы вводите в командной строке. В сочетании с вашим take
факт (и еще я добавила Для наглядности):
take(desk) :- write('This thing is way too heavy for me to carry!'), nl.
take(chair) :- write('This is easier to carry.'), nl.
вы получите:
?- game.
> take(desk).
This thing is way too heavy for me to carry!
> take(chair).
This is easier to carry.
>
вы не получите true
или false
, потому что game
цель не решается, пока вы не выйдете из цикла каким-то образом. Вы можно добавить проверки для quit
или bye
или что угодно, чтобы выйти из game
петли. Ctrl-C или Ctrl-D также можно использовать для прерывания цикла. Вам может потребоваться добавить некоторые другие "функции", чтобы заставить его работать по вашим потребностям или вкусу.