home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / prolog / library / prolo_c / exampl29.pro < prev    next >
Text File  |  1986-10-06  |  2KB  |  59 lines

  1. /* Program 29 */
  2.  
  3. domains
  4.     list=symbol*
  5.     scores=integer
  6.  
  7. predicates
  8.     member(symbol,list)
  9.     run
  10.     continue(list,scores)
  11.     yes_no_count(symbol,list)
  12.     guessword(scores,list)
  13.     word(list,integer)
  14.     read_as_list(list,integer)
  15.  
  16. goal
  17.     makewindow(1,7,0,"",0,0,25,80),
  18.     makewindow(2,7,135,"Counting",1,20,4,34),
  19.     makewindow(3,112,112,"YES",5,5,7,30),
  20.     makewindow(4,112,112,"NO",5,40,7,30),
  21.     makewindow(5,7,7,"",14,20,10,34),
  22.     run.
  23.  
  24. clauses
  25.     run:- word(W,L),
  26.         shiftwindow(1),clearwindow,
  27.         write("The word has ",L," letters"),
  28.         shiftwindow(2),clearwindow,
  29.         shiftwindow(3),clearwindow,
  30.         shiftwindow(4),clearwindow,
  31.         continue(W,0),fail.
  32.     continue(L,R):-
  33.         shiftwindow(5),clearwindow,
  34.         write("Guess a letter :"),
  35.         Total=R+1,readln(T),yes_no_count(T,L),
  36.         shiftwindow(5),clearwindow,
  37.         guessword(Total,L),continue(L,Total).
  38.     yes_no_count(X,List):-
  39.         member(X,List),shiftwindow(3),write(X),
  40.             shiftwindow(2),write(X),!.
  41.     yes_no_count(X,_):-
  42.         shiftwindow(4),write(X),
  43.         shiftwindow(2),write(X).
  44.     guessword(Count,Word):-
  45.         write("Know the word yet? Press y or n"),
  46.         readchar(A),A='y',cursor(0,0),
  47.         write("Type it in one letter per line \n"),
  48.         word(Word,L),read_as_list(G,L),
  49.         G=Word,clearwindow,window_attr(112),
  50.         write("Right! You used ",Count," guesses"),
  51.         readchar(_),window_attr(7),!,fail.
  52.     guessword(_,_).
  53.     word([b,i,r,d],4). word([p,r,o,l,o,g],6).
  54.     word([f,u,t,u,r,e],6).
  55.     member(X,[X|_]):-!.
  56.     member(X,[_|T]):-member(X,T).
  57.     read_as_list([],0) :-!.
  58.     read_as_list([Ch|Rest],L) :-
  59.         readln(Ch),L1=L-1,read_as_list(Rest,L1).