Отображение списка объектов в XPCE
Я хочу сделать анимацию в XPCE, состоящую из произвольного числа движущихся кругов. Круги приведены в списке Пролога, содержащем для каждого круга его координаты, радиус и цвет. Следовательно, список выглядит так: [[[1,2],20, красный],[[40,2],15, зеленый],...] Конечно, я могу создать круг, назвать его и покрасить следующее:
new(@p,picture).
send(@p,display,new(@ci,circle(20)),point(1,2)).
send(@ci,fill_pattern,colour(red)).
Но что мне делать, когда я хочу представить весь список? Мне как-то нужны динамические имена, но такие вещи, как
send(@p,display,new(@X,circle(20)),point(1,2)).
где X - некоторый идентификатор, указанный ранее, не принимаются.
1 ответ
Решение
Что-то вроде того?
t1 :-
L = [[[1,2],20,red],[[40,2],15,green]] ,
new(D,picture),
maplist(my_display(D), L),
send(D, open).
my_display(D, [[X,Y], R, Colour]) :-
new(C, circle(R)),
send(C, fill_pattern, colour(Colour)),
send(D, display, C, point(X,Y)).