美文网首页
[ABM·009]NetLogo词典之ask

[ABM·009]NetLogo词典之ask

作者: GIT叙事者 | 来源:发表于2024-07-08 12:14 被阅读0次

    及至始皇,……。乃使蒙恬北筑长城而守藩篱,却匈奴七百余里;……

    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
    

    结果是:

    让不同深浅的红色海龟绘制六边形

    相关文章

      网友评论

          本文标题:[ABM·009]NetLogo词典之ask

          本文链接:https://www.haomeiwen.com/subject/yyiocjtx.html