简单的Prolog Hangman游戏错误

时间:2018-06-24 20:11:49

标签: prolog instantiation-error

我正在尝试开发一个简单的子手游戏,作为大学课程的家庭作业。这很简单,但是我遇到了麻烦,无法正常工作。

此代码:

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!!!').

游戏的想法是让玩家尝试猜出“ car”一词,我将其放入列表[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.

请,一些在Prolog中经验丰富的人可以帮助我吗?

非常感谢。

0 个答案:

没有答案