Created
November 7, 2017 22:11
-
-
Save DoubleDi/17c230e1edf5528f12a11622f76a4dc1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Запуск программы */ | |
start :- /* создаём диалоговое окно */ | |
new(DW, dialog('Окно моей программы')), | |
/* создаём поле Picture для вывода графических | |
фигур и задаём его размеры */ | |
new(Picture, picture), | |
send(Picture, width(350)), | |
send(Picture, height(350)), | |
/*добавляем в это диалоговое окно список | |
объектов*/send_list(DW,append, /*графическое поле*/ | |
[Picture, | |
/*поле для ввода ширины фигуры: заданы имя поля, | |
значение по умолчанию и min и мах ограничения */ | |
new(Width, int_item(width, low := 10, | |
high := 300, default := 150)), | |
/* аналогичное поле для высоты фигуры */ | |
new(Height,int_item(height, low := 10, | |
high := 300, default := 150))]), | |
/*добавляем поле для ввода Х-координаты */ | |
send(DW, append, new(X, int_item(x_coord, | |
default := 10))), | |
/*добавляем поле для ввода Y-координаты */ | |
send(DW, append, new(Y, int_item(y_coord, | |
/*добавляем список объектов*/ | |
send_list(DW,append, | |
default :=10))), | |
/* кнопка "Нарисовать прямоугольник", при нажатии | |
происходит вычисление предиката mybox с пятью | |
аргументами, последние четыре получают значения из | |
соответствующих полей ввода */ | |
[button('нарисовать прямоугольник', | |
86 | |
message(@prolog,mybox,Picture, | |
Width?selection, | |
Height?selection, | |
X?selection, Y?selection)), | |
/* аналогичная кнопка "Нарисовать эллипс" */ | |
button('нарисовать эллипс', | |
message(@prolog, myellipse, | |
Picture, | |
Width?selection, | |
Height?selection, | |
X?selection, Y?selection)), | |
/*кнопка "стереть" очищает графическую область*/ | |
button('стереть', | |
message(Picture,clear))]), | |
/*добавляем кнопку "exit" завершения работы | |
программы – уничтожает диалоговое окно */ | |
send(DW, append, | |
button(exit, and(message(DW, destroy), | |
message(Picture, destroy)))), | |
/*делаем объекты DW и Picture активными */ | |
send(Picture, open), | |
send(DW, open). | |
/* вспомогательный предикат рисования | |
прямоугольника заданной ширины и высоты, с | |
заданными координатами левого верхнего угла */ | |
mybox(Picture,Width,Height,X,Y) :- | |
send(Picture, display, | |
new(_,box(Width,Height)), point(X,Y)). | |
/*аналогичный предикат рисования эллипса */ | |
myellipse(Picture,Width,Height,X,Y) :- | |
send(Picture, display, | |
new(_,ellipse(Width,Height)), | |
point(X,Y)). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment