如果满足条件,使海龟改变变量
Make turtle change variable if conditions are met
我必须繁殖,breed1
和 breed2
,如果 breed2
的成员足够接近,只有 breed1
可以更改变量 var
radius 4
。但是,我的代码不起作用,请参见下文。
这是 breed1 将执行的代码的一部分:
let x min-one-of other breed2 with [ var >= 6 ] in-radius 4 [ distance myself ] ;check whether there is one (or more) members of breed2 with a value of or above 6 of var
ifelse (x != nobody) [ ;if there is one
ask one-of breed2 in-radius 4 with [ var >= 6 ] [ set var var + 1 ] ;change value
[right random 360 forward 1] ;else walk random
我的想法是,breed1 检查其附近(半径 4)的 breed2 成员,如果有一个或多个,它将更改其中一个给定变量(var)的值大于 6 的成员。
但是,上面的代码并没有改变变量var。我怎样才能达到我想要的?
我认为你有一个括号错误 - 你的 then 代码在开始你的 else 代码之前没有结束。但是你也有一个效率问题,因为你正在两次建造附近的海龟。一旦你有了 x,你就可以简单地使用它。所以修复它和括号错误:
ifelse (x != nobody)
[ ask x [ set var var + 1 ] ] ; x changes value
[ right random 360 forward 1 ] ; the asking turtle moves
我必须繁殖,breed1
和 breed2
,如果 breed2
的成员足够接近,只有 breed1
可以更改变量 var
radius 4
。但是,我的代码不起作用,请参见下文。
这是 breed1 将执行的代码的一部分:
let x min-one-of other breed2 with [ var >= 6 ] in-radius 4 [ distance myself ] ;check whether there is one (or more) members of breed2 with a value of or above 6 of var
ifelse (x != nobody) [ ;if there is one
ask one-of breed2 in-radius 4 with [ var >= 6 ] [ set var var + 1 ] ;change value
[right random 360 forward 1] ;else walk random
我的想法是,breed1 检查其附近(半径 4)的 breed2 成员,如果有一个或多个,它将更改其中一个给定变量(var)的值大于 6 的成员。
但是,上面的代码并没有改变变量var。我怎样才能达到我想要的?
我认为你有一个括号错误 - 你的 then 代码在开始你的 else 代码之前没有结束。但是你也有一个效率问题,因为你正在两次建造附近的海龟。一旦你有了 x,你就可以简单地使用它。所以修复它和括号错误:
ifelse (x != nobody)
[ ask x [ set var var + 1 ] ] ; x changes value
[ right random 360 forward 1 ] ; the asking turtle moves