我应该使用哪个控制原语来避免编译期间的语法错误?

时间:2014-11-01 10:47:27

标签: netlogo

我在这里尝试做的是使某些颜色的补丁产生或杀死海龟,并且道路补丁(颜色灰色)根据用户在界面中选择的内容对海龟的标题施加变化。我在我的代码中使用了while控制原语,但是编译器会报告错误消息:"如果需要两个输入,则为TRUE / FALSE和命令块。"我希望在蓝色方块上生成的汽车的标题只有当它们在蓝色方块上时才能保持90,并且当汽车沿着产卵和杀伤补丁之间的道路行驶时,改变为用户定义的任何东西。我应该如何更改while控制原语以防止编译器错误?会"如果"是否更适合我想要实现的目标?

 to edit-world-secondary

ask turtles-on patches with [pcolor = grey]
[control-movement]  

 ask patches with [pcolor = blue]
 [ crt 10[ init-car]]
 while [turtles-on patches with [pcolor = blue] [ set heading 90] 
 ]

 ask turtles-on patches with [pcolor = orange][process-sinks]

 end

1 个答案:

答案 0 :(得分:1)

您可能希望将其更改为ask

如果您想要做什么,请问蓝色斑块上的海龟将其标题设置为90

ask turtles with[pcolor = blue][set heading 90]

NetLogo的一个奇怪但有用的特性是海龟能够访问其所在补丁的变量。

NetLogo中的一个很好的经验法则是避免while循环它们在文化上不合适,通常可以通过askrepeatforeach更好地完成,map

如果你想让代理人在每个回合中做一些事情,那么按照惯例问他们。

如果您被迫使用while,则这是语法

while [ reporter ] [ commands]

(记者周围有括号)

并写下来。

http://ccl.northwestern.edu/netlogo/docs/dictionary.html#while