home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Borland Plateform / Turbo Prolog 2 / EXAMPL28.PRO < prev    next >
Encoding:
Prolog Source  |  1986-04-25  |  1.6 KB  |  57 lines

  1.                        /* Program 28 */
  2. domains
  3.      monsters=integer*
  4. predicates
  5.     delay(integer)
  6.     zapGun(integer,integer)
  7.     delete(integer,monsters,monsters)
  8.     testresult(monsters,integer)
  9.     test(char,integer,integer)
  10.     doit(integer,monsters,integer)
  11.     showThem(monsters,integer,char)
  12. goal
  13.     makewindow(1,7,0,"",0,0,25,80),
  14.     doit(56,[42,45,50,5,56,59,62],0).
  15. clauses
  16.     doit(Initial,Monsters,Row):-
  17.         testresult(Monsters,Row),
  18.         showThem(Monsters,Row,'\1'),
  19.         readchar(Ch),
  20.         test(Ch,Initial,Final),
  21.         zapGun(24,Final),
  22.         delete(Final,Monsters,LiveMonsters),
  23.         NewRow=Row+1,
  24.         cursor(24,Final),
  25.         showThem(Monsters,Row,' '),
  26.         doit(Final,LiveMonsters,NewRow).
  27.     testresult([],_):-
  28.         write("\nWell done champion zapper !"),
  29.         delay(32000),exit.
  30.     testresult(_,Row) :- Row<24,!.
  31.     testresult(_,_) :-
  32.         write("\nToo late, YOU have been zapped !"),
  33.         delay(32000),exit.
  34.  
  35.     showThem([],_,_) :-!.
  36.     showThem([Monster|TheRest],Row,Char) :-
  37.           scr_char(Row,Monster,Char),
  38.           showThem(TheRest,Row,Char).
  39.  
  40.     zapGun(N,C):-
  41.           N>0,!,scr_char(N,C,'^'),delay(150),
  42.           scr_char(N,C,' '),N1=N-1,zapGun(N1,C).
  43.     zapGun(_,_).
  44.  
  45.     test('z',0,0):-!.
  46.     test('x',79,79):-!.
  47.     test('z',OldCol,NewCol):-!,NewCol=OldCol-1.
  48.     test('x',OldCol,NewCol):-!,NewCol=OldCol+1.
  49.     test(_,C,C).
  50.  
  51.     delete(_,[],[]).
  52.     delete(X,[X|R],R):-!.
  53.     delete(X,[Y|R],[Y|R2]) :- !,delete(X,R,R2).
  54.  
  55.     delay(N):-N>0,!,N1=N-1,delay(N1).
  56.     delay(0).
  57.