0
사용자가 게임을 찾기 위해 질문에 답하는 프로그램을 만들려고하지만 목록을 다루고 어설 션하는 방법을 이해할 수 없습니다. 나는 procedure pointsystem으로 다른 방법을 시도했다. 이 프로그램은 다음과 같이이다 :프롤로그를 가진 사용자를위한 올바른 게임을 맞춰보십시오.
yeah:-
write('Please answer the questions to find the game which suite you!'),
nl,
find(Game),
nl,
write('I guess that the game is :'),
nl,
write(Game),
undo.
find(assassinsCreedII) :-
assassinsCreedII(assassins).
find(sims3) :-
sims3.
find(undefined).
points(G) :-
X=0,
((G == assassins) ->
((X = X + 1),
print(X));
Y=0,
(G == sims3) ->
(Y = Y + 1)).
assassinsCreedII(assassins) :-
actionGame(assassins),
adventureGame(assassins).
sims3 :-
simulationGame(sims).
actionGame(name) :-
test(do_you_like_action_games,name).
adventureGame(name) :-
test(do_you_like_adventure_games,name).
simulationGame(N) :-
test(do_you_like_simulation_games,N).
requisition(Question,Name) :-
write(Question),
write('?'),
read(Answer),
nl,
( (Answer==yes ; Answer==y)
->
assert(yes(Question))
;
assert(no(Question)),
fail
),
points(Name).
:- dynamic yes/1,no/1.
test(Q,Name) :-
(yes(Q) ->
true;
(no(Q)
-> fail
; requisition(Q,Name)
)
).
undo :-
retract(yes()),fail.
undo :-
retract(no()), fail.
undo.
나는 결과가 프로그램을 실행하면 : 를 - 그래. 게임에 맞는 질문을 찾으십시오! 게임은 다음과 같을 것입니다 : undefined true.
이 방법이 잘못된 이유를 이해할 수 없습니다. 가장 큰 점수를 가진 게임을 찾고 인쇄 할 수 있도록 어떻게 단언 또는 목록으로이 작업을 수행 할 수 있습니까?