我不明白为什么我的netlogo代码中出现了某些内容,但是最终我发现全局变量会改变海龟的值,这可能吗? 我注意到这是因为我的代码中有2个打印值,如下所示:
breed [players player]
breed [balls ball]
globals [
TURNS;
TEAM-OWNER
]
to setup
clear-all
reset-ticks
set TURNS 0
setup-players
setup-ball
end
to setup-ball
create-balls 1 [
setxy 0 0
set color orange
set shape "bug"
set size 2.5
]
end
to setup-players
create-players 5 [
setxy 0 0
set color white
set shape "bug"
set size 2.5
]
end
to go
set TURNS TURNS + 1
print word "this is the turns " TURNS
print ( word " values " TEAM-OWNER)
if ticks >= 1000 [ stop ]
ask players [
print ( word " values " TEAM-OWNER)
fd 2
set TEAM-OWNER "red"
]
ask balls [
fd 2
set TEAM-OWNER "black"
]
end
这可能吗?全局值不会改变所有海龟的值吗? 这是我得到的照片:
this is the turns 1
values 0
values 0
values red
values red
values red
values red
this is the turns 2
values black
values black
values red
values red
values red
values red
有没有像黑色的1倍?和红色其他时间?为什么我会得到2个黑人?
答案 0 :(得分:3)
全局变量是全局变量-只有一个副本,所有乌龟都检索并修改同一副本。
看看这段代码:
ask players [
print ( word " values " TEAM-OWNER)
fd 2
set TEAM-OWNER "red"
]
ask balls [
fd 2
set TEAM-OWNER "black"
]
首先,每个玩家向前移动两个距离单位,然后将TEAM-OWNER的值设置为“ red”。如果您有10位玩家,则全局变量TEAM-OWNER将被设置为红色10次。然后,每个球都向前移动两个距离单位,并将变量TEAM-OWNER设置为“黑色”。只要您有一个(或多个)球,全局变量将被覆盖。
全局变量用于模型中每只海龟都相同的事物。