如何在 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,它将是灰色而不是绿色。即:
- 我有一个称为资源的补丁自己的变量。这个变量例如从 0 到 1 不等。我希望所有值 <=0.2 的补丁都是灰色的,其余的是绿色的
所以,我想在 NetLogo 6.2 界面上创建一个按钮,点击它会出现:
- 绿色和灰色补丁(资源变量的值<=0.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
放在我的案例中以转到以前的状态。
我有一个新手问题:我想在界面中创建一个按钮来显示补丁变量的值 (patches-own: resource)。我想单击一次以显示补丁变量(资源)并再次单击按钮以使补丁变量消失。我还想用颜色来做这个,如果这个变量小于 0.2,它将是灰色而不是绿色。即:
- 我有一个称为资源的补丁自己的变量。这个变量例如从 0 到 1 不等。我希望所有值 <=0.2 的补丁都是灰色的,其余的是绿色的
所以,我想在 NetLogo 6.2 界面上创建一个按钮,点击它会出现:
- 绿色和灰色补丁(资源变量的值<=0.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
放在我的案例中以转到以前的状态。