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

  1. /* Program 34 */
  2. /*
  3.   NOTE:  all graphics programs are in white on a
  4.   black background. If you don't like this
  5.   combination it can easily be changed.  You can
  6.   change the parameters to the 'graphics'
  7.   predicate, or you can change the drawing
  8.   color. Read page 92 and try some combinations
  9.   of parameters.  For example: graphics(1,5,17)
  10.   on a CGA will give you pink letters and a
  11.   white line on a blue background. Other systems
  12.   give different colors. Just explore.
  13. */
  14.  
  15. domains
  16.     intege = reference integer
  17.  
  18. predicates
  19.     move(char,intege,intege,intege,intege)
  20.     start
  21.     changestate(intege,intege)
  22.  
  23. goal
  24.     start.
  25.  
  26. clauses
  27.     start:-
  28.         makewindow(1,7,7,"directions to turtle",0,0,24,80),
  29.         write(" Use the letters: u to move up"),nl,
  30.         write("                  d to move down"),nl,
  31.         write("                  r to move right"),nl,
  32.         write("                  l to move left"),nl,
  33.         write(" Press <CTRL><BREAK> when done."),
  34.         write("\n\n Press any key to continue"),
  35.         readchar(_),
  36.         graphics(1,1,0),
  37.         line(1000,1000,1000,31000,7),
  38.         line(1000,31000,31000,31000,7),
  39.         line(31000,31000,31000,1000,7),
  40.         line(31000,1000,1000,1000,7),
  41.         changestate(15000,15000).
  42.     changestate(X,Y):-
  43.         readchar(Z),move(Z,X,Y,X1,Y1),changestate(X1,Y1).
  44.     move('r',X,31000,X,31000):- !.
  45.     move('r',X,Yold,X,Ynew):- !,Ynew=Yold+100,dot(X,Yold,3).
  46.     move('l',X,1000,X,1000):- !.
  47.     move('l',X,Yold,X,Ynew):- !,Ynew=Yold-100,dot(X,Yold,3).
  48.     move('u',1000,Y,1000,Y):- !.
  49.     move('u',Xold,Y,Xnew,Y):- !,Xnew=Xold-100,dot(Xold,Y,3).
  50.     move('d',31000,Y,31000,Y):- !.
  51.     move('d',Xold,Y,Xnew,Y):- !,Xnew=Xold+100,dot(Xold,Y,3).
  52.     move('*',_,_,_,_):- !,exit.
  53.     move(_,X,Y,X,Y).
  54.