Я пытаюсь реализовать программу Prolog, которая может взаимодействовать с Java.Для этого я использую JPL в качестве интерфейса Prolog / Java.
Я ищу механизм, который позволяет мне автоматически выполнять действия, когда условия становятся истинными.
Условия также представленыпредикаты.Я пытался использовать предопределенный предикат «когда / 2», проблема в том, что, как указано в документации здесь , условие должно быть одним из следующих:
nonvar(X)
ground(X)
?=(X, Y)
(Cond1, Cond2)
(Cond2; Cond2)
Последние два условиякажется, что я должен использовать, но я не мог заставить их работать.
Что мне нужно изменить, чтобы создать свои собственные условия?
Пожалуйста, рассмотрите J
как местный прологпеременная здесь.
:- use_module(library(jpl)).
:- use_module(library(when)).
should_engage(J) :-
jpl_get(J, 'shouldEngage', V),
V==true,
jpl_get(J, 'players', P),
jpl_call(P, 'canSeeEnemies', [], R),
R==true,
jpl_get(J, 'weaponry', W),
jpl_call(W, 'hasLoadedWeapon', [], R),
R==true.
call_java(J) :-
jpl_call(J, 'stateEngage', [], R).
when(should_engage(X), call_java(X)).