如果在NetLogo中使用语句

时间:2019-11-27 21:45:07

标签: netlogo

我正在尝试模拟蜜蜂传播花粉的过程,所以我希望这样做,以便当蜜蜂拜访花朵时将其颜色更改为蓝色,而乌龟“蜜蜂”的花粉值为+1,然后花粉值为+3并造访花朵时,颜色变为绿色。

我尝试了多种方法来解决这个问题,例如是否存在一个if语句。

to pollenate 
ask turtles [
if pollen > 3
and if pcolor = yellow or blue [ 
set pcolor white
set pollen pollen - 3
]
]
end 

我不确定是否存在和语句。

所以我尝试了当海龟的花粉计数高于3时它们会改变颜色,然后尝试下面的代码,但始终收到错误消息。

to pollenate
ask turtles with [ color = white ] [
if pcolor = blue
[set pcolor = green
set pollen pollen -3
]
]
end

我不断收到错误消息“设置预期的2个输入”

任何一种方法的帮助都将不胜感激,或者如果我做错了整个事情,请告诉我哈哈。

1 个答案:

答案 0 :(得分:0)

这是您的两个问题的答案。

(1)“和if”可以通过在测试中使用逻辑AND来完成。我必须在通过“或”与“花粉> 3”测试连接的颜色测试周围使用括号。与数学中一样,首先对内括号进行评估。我更喜欢在所有逻辑测试(例如花粉> 3)周围使用括号-不是必需的,但我发现它更易于阅读。

to pollenate 
ask turtles [
    if (pollen > 3) and ((pcolor  = yellow) or (pcolor = blue))
            [ 
               set pcolor white
               set pollen pollen - 3
           ]
]
end 

您也可以像这样在颜色列表中使用pcolor进行测试;

to pollenate 
ask turtles [
    if (pollen > 3) and (member? pcolor [yellow blue] )
            [ 
               set pcolor white
               set pollen pollen - 3
           ]
]
end 

关于第二个问题,工作版本为

o pollenate
ask turtles with [ color = white ] [
if pcolor = blue
[set pcolor = green
set pollen pollen - 3
]
]
end

没有看到区别吗?我在减号的两边都留了一个空格,否则Netlogo会看到三个参数:花粉,花粉和-3,而不是您想要的两个参数,即花粉和(花粉-3)。