Простая игра Prolog Hangman ошибка - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь разработать простую игру палача в качестве домашнего задания для предмета в университете. Это очень просто, но у меня проблемы, и я не могу заставить это работать.

Это код:

member(El,[El|_]).
member(El,[_|Tl]) :- member(El,Tl).

inc(X,Y) :- Y is X+1.
dec(X,Y) :- Y is X-1.

start(E,A) :-
    ((E==5) -> loose,!);
    ((A==3) -> won,!);
    nl,
    write('write a letter: '),
    read(Letter),
    (member(Letter,[c,a,r])>write('Hit!'),inc(A,W), 
    start(E,W);write('Miss!'),inc(E,L),start(L,A)).

loose :- write(‘You Loose !!!').
won :- write(‘You Win!!!').

Идея игры в том, чтобы игрок попытался угадать слово «машина», которое я поместил в список [c, a, r]. когда игрок вводит букву, которая находится в списке, A = A + 1. когда игрок набирает букву, которой нет в списке, E = E + 1. Он должен повторяться до тех пор, пока A = 3 (игрок выиграл) или E = 5 (игрок проиграл = 5 неправильных букв). Но это не работает так, как должно. И программа никогда не сможет повторить цикл до выигрыша игрока или проиграть игру.

когда я поставил действительное письмо, я получил это сообщение:

?- start(E,A).
write a letter: a.
Hit!
ERROR: Arguments are not sufficiently instantiated
ERROR: In:
ERROR:   [10] _4366 is _4372+1
ERROR:    [8] start(_4398,_4400) at c:/users/documents/prolog/new2.pl:7
ERROR:    [7] <user>
ERROR: 
ERROR: Note: some frames are missing due to last-call optimization.
ERROR: Re-run your program in debug mode (:- debug.) to get more detail.

когда я поставил неверное письмо, я получил то же сообщение:

?- start(E,A).
write a letter: k.
Miss!
ERROR: Arguments are not sufficiently instantiated
ERROR: In:
ERROR:   [10] _5378 is _5384+1
ERROR:    [8] start(_5410,_5412) at c:/users/ocuments/prolog/new2.pl:7
ERROR:    [7] <user>
ERROR: 
ERROR: Note: some frames are missing due to last-call optimization.
ERROR: Re-run your program in debug mode (:- debug.) to get more detail.

Пожалуйста, мог бы кто-нибудь более опытный в Прологе помочь мне?

Большое спасибо.

...