2012-07-10 77 views
0

我想在XPCE中制作一个动画,由任意数量的移动圆组成。 圆形在Prolog列表中给出,其中包含每个圆的坐标,半径和颜色。因此,列表看起来像这样:[[[1,2],20,红色],[[40,2],15,绿色],...] 我当然可以生成一个圆圈,命名它和颜色它如下:在XPCE中描述对象列表

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)). 
+0

是的,似乎这样做!谢谢,我既没有Prolog的经验,也没有编程经验,也不知道'maplist'命令。我相信它会派上用场。 :-) – MirrorMan 2012-07-10 21:21:03