我们尝试根据上限和下限进行编码以获得true/false。如果基数移动是2-5,并且所有<2和>5都应该返回"False“,则我们尝试获取"true”。取而代之的是,当基础移动变为分数时,我们每次点击都会得到true/false。通过第一次点击,我们得到了一个乌龟和基地移动的正确,基地移动3,这是正确的,因为我们设置了超过2应该是真的。随着下一次点击,基准移动更改为3.5,我们得到了FALSE,这是不正确的,因为我们设置的2-5应该是真的。这是我们的代码。我们找不到问题所在。
to setup
ca
file-close-all
resize-world 0 250 0 250
set-patch-size 2.5
load-shapefile
load-map
get-lor
get-at
get-sqr
create-farmers
patch-with-sqr
ask turtles [ set adopted? false ]
reset-ticks
end
to go
ask turtles
[ set age age + 1
get-probability
check-moving-prob
if adopted? = true
[ let target one-of patches with [ commune? = true ]
move-to target
]
]
tick
if ticks > 5 [stop]
end
to check-moving-prob
if base-moving > 5 [ set base-moving 5 ] ; setting boundaries of probability
if base-moving < 0 [ set base-moving 0 ]
ifelse base-moving > 2
[ set adopted? adopted? = true ]
[ set adopted? adopted? = false ]
ifelse adopted? = true
[ set color orange ]
[ set color black ]
end发布于 2021-06-16 07:12:13
你已经写好了(假设我正确地格式化了你的代码):
ifelse base-moving > 2
[ set adopted? adopted? = true ]
[ set adopted? adopted? = false ]在NetLogo中,等号是逻辑测试,而不是赋值运算符。因此,就像使用set color orange将颜色设置为橙色一样,应该使用以下命令将布尔变量设置为true或false:
ifelse base-moving > 2
[ set adopted? true ]
[ set adopted? false ]您在代码中所做的是检查它是否为真,然后将该测试的结果赋给变量,就像您已经编写了:
let test-result adopted? = true
set adopted? test-resulthttps://stackoverflow.com/questions/67993557
复制相似问题