如何在 NetLogo 6.2 版本的界面上创建一个显示补丁变量值的按钮?

How to create a button on the interface that shows the values ​of a patch variable in NetLogo version 6.2?

我有一个新手问题:我想在界面中创建一个按钮来显示补丁变量的值 (patches-own: resource)。我想单击一次以显示补丁变量(资源)并再次单击按钮以使补丁变量消失。我还想用颜色来做这个,如果这个变量小于 0.2,它将是灰色而不是绿色。即:

  1. 我有一个称为资源的补丁自己的变量。这个变量例如从 0 到 1 不等。我希望所有值 <=0.2 的补丁都是灰色的,其余的是绿色的

所以,我想在 NetLogo 6.2 界面上创建一个按钮,点击它会出现:

  1. 绿色和灰色补丁(资源变量的值<=0.2时为灰色)
  2. 每个patch的资源变量值(例如:patch(0,0)的resource值为0.2,patch(0, 1)的resource值为0.9

再次点击同一个按钮后它会消失

可以吗?

我的代码:

ask patches [
ifelse plabel = "" [

set plabel  (word "(" resource ")") ;;Here, I would like to show the resource value of ;each patch
set plabel-color white 
  ] 
  [ 
  set plabel ""
  ]


no-display
ask patches [
    ;; low values 
    ifelse resource  <= 0.2 [ set pcolor gray + 4 ]  [
    set pcolor green - 4 ] ;; high value
  ]
display 

提前致谢

你可以使用一个全局变量来控制显示状态,让按钮的效果通过ifelse进行相应的调整。

例如:

; The name of the button is "display-resource"

globals [
 display-control 
]

patches-own [
 resource 
]

to setup
  clear-all
  ask patches [
   set resource precision (random-float 1) (1)
  ]
end

to display-resource
  ifelse (display-control = 0)
   [display-on]
   [display-off]
end

to display-on
  ask patches [
   ;set plabel resource
   ifelse (resource <= 0.2)
    [set pcolor grey]
    [set pcolor green - 1] 
  ]
  
  set display-control 1
end

to display-off
  ask patches [
   ;set plabel ""
   set pcolor black 
  ]
  
  set display-control 0
end

一些注意事项:

  • 请注意,我包含了有关添加 plabel 的部分,但我将其注释掉了。由您选择,但让每个补丁都显示一个数字 plabel 会使视图充满符号。即使 resource(或其显示值)仅达到第一个小数位 - 这就是 set resource precision (random-float 1) (1) 所做的,也是如此。
  • 如果你还想从这种显示模式中得到更多的信息(“更多”指的是你可能会放弃使用plabel),你可以考虑使用scale-color,这会给更细致的着色。
  • 我不知道补丁的颜色以前的状态是什么,所以我只是把 set pcolor black 放在我的案例中以转到以前的状态。