我正在尝试模拟蜜蜂传播花粉的过程,所以我希望这样做,以便当蜜蜂拜访花朵时将其颜色更改为蓝色,而乌龟“蜜蜂”的花粉值为+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个输入”
任何一种方法的帮助都将不胜感激,或者如果我做错了整个事情,请告诉我哈哈。
答案 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)。