predicates
inspiral(integer)
goal
graphics(2,1,0),inspiral(10).
clauses
inspiral(X):-
forward(5000),right(X),Y=X+1,inspiral(Y).
/* Программа 38 */
predicates
square(integer)
fillsquare(integer)
goal
graphics(2,1,0),fillsquare(5000).
clauses
square(X):-
forward(X),right(90),forward(X),right(90),
forward(X),right(90),forward(X),right(90).
fillsquare(X):-X>10000,!.
fillsquare(X):-square(X),Y=X+5000,fillsquare(Y).
/* Программа 39 */
predicates circle
goal circle.
clauses circle:-forward(1000),right(1),circle.
Как показывает программа 40, графикой Турбо Пролога можно
пользоваться внутри окон. Здесь рисуется окно, после чего в
пяти различных позициях повторяется эффект "светлого пятна"
(несколько линий, выходящих из фиксированной точки и ведущих
в 15 других точек). Затем рисуется окно, частично перекрываю-
щее первое, а потом появляются еще пять "светлых пятен". И,
наконец, строится окно с текстом, в котором пользователя
приглашают нажать на пробел. Всякий раз, когда пользователь
нажимает на пробел, одно из окон уничтожается, а приглашение
появляется вновь.
Обратите внимание, что текстовыми средствами и средствами
графики можно пользоваться одновременно, причем это можно де-
лать как внутри окна, так и на полном экране.
/* Программа 40 */
domains
list=integer*
predicates
spotlight(integer,integer,integer)
xy(list)
undo
goal
graphics(2,1,0),
makewindow(1,7,7,"First",1,1,16,70),
xy([0,0,0,9000,3000,26500,20100,24400,20100,1000]),
makewindow(2,7,7,"Second",10,20,14,60),
xy([0,1000,0,9000,0,20000,15000,1000]),
makewindow(3,7,7,"Text",15,0,6,35),
write("This could be any text writlen by any"),nl,
write("of the Turbo Prolog writing predicates"),
undo,undo,undo.
clauses
xy([X,Y|Rest]):-
spotlight(15,X,Y),!,xy(Rest).
xy(_).
spotlight(0,_,_):-!.
spotlight(N,R,C):-
X=N*1200,line(,C,9000,X,1),N1=N-1,
spotlight(N1,R,C).