首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改每次单击时返回的true/false,尽管NETLOGO中的条件另有说明

更改每次单击时返回的true/false,尽管NETLOGO中的条件另有说明
EN

Stack Overflow用户
提问于 2021-06-16 05:10:40
回答 1查看 23关注 0票数 0

我们尝试根据上限和下限进行编码以获得true/false。如果基数移动是2-5,并且所有<2和>5都应该返回"False“,则我们尝试获取"true”。取而代之的是,当基础移动变为分数时,我们每次点击都会得到true/false。通过第一次点击,我们得到了一个乌龟和基地移动的正确,基地移动3,这是正确的,因为我们设置了超过2应该是真的。随着下一次点击,基准移动更改为3.5,我们得到了FALSE,这是不正确的,因为我们设置的2-5应该是真的。这是我们的代码。我们找不到问题所在。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2021-06-16 07:12:13

你已经写好了(假设我正确地格式化了你的代码):

代码语言:javascript
复制
ifelse base-moving > 2
  [ set adopted? adopted? = true ]
  [ set adopted? adopted? = false ]

在NetLogo中,等号是逻辑测试,而不是赋值运算符。因此,就像使用set color orange将颜色设置为橙色一样,应该使用以下命令将布尔变量设置为truefalse

代码语言:javascript
复制
ifelse base-moving > 2
  [ set adopted? true ]
  [ set adopted? false ]

您在代码中所做的是检查它是否为真,然后将该测试的结果赋给变量,就像您已经编写了:

代码语言:javascript
复制
let test-result adopted? = true
set adopted? test-result
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67993557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档