及至始皇,……。乃使蒙恬北筑长城而守藩篱,却匈奴七百余里;……
NetLogo的ask,和上文这句话的“使”字含义类似,即派遣、命令,其基本结构是:
派遣某人去做某事/某些事。
派遣 蒙恬 ①去北疆②修筑长城③守藩篱④却匈奴,共四件事。
ask的基本构成是:
ask some agents [do something]
比如:
ask turtles [ forward 1 ] #命令海龟前移一步
中括号里是一个祈使句,就是让海龟去干的事。
这里有个问题,这个ask是谁发出的呢?答案是:默认由观察者( observer)发出。NetLogo里有4种自主体:观察者、海龟、嵌块和连接。观察者指的是构建模型的人,通常是发出命令的;而海龟、嵌块和连接,是接受命令的。
ask patches [ set pcolor green] #命令嵌块集将颜色设置为绿色
正如可以派遣蒙恬做很多事一样,观察者也可以命令其它自主体做很多事,比如:
# 让海龟画一个六边形
ask turtles [
pen-down
repeat 6 [
forward 300
right 60
]
]
上面这段代码有两层嵌套的中括号。
外面一层是:①下笔②重复6次
那么,什么动作要重复6次呢?这个就是内层的中括号里所说的了:①向前走300步②右转60度。
毫无疑问,中括号里可以同时包括多个祈使句,每个祈使句写成一行。
中括号括起来的祈使句,也可以放在新建自主体的时候,比如,在新建海龟的时候,可以设置它们的位置、颜色等等。
crt 10 [
setxy random-xcor random-ycor
set color red + random-float 4
]
为了简便展示,把上面的代码集中写在setup里:
to setup
clear-all
reset-ticks
crt 10 [
setxy random-xcor random-ycor
set color red + random-float 4
]
ask turtles [
pen-down
repeat 6 [
forward 3
right 60
]
]
end
结果是:
让不同深浅的红色海龟绘制六边形
网友评论