Netlogo与海龟的全球价值不同

时间:2019-04-26 16:51:46

标签: netlogo

我不明白为什么我的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个黑人?

1 个答案:

答案 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设置为“黑色”。只要您有一个(或多个)球,全局变量将被覆盖。

全局变量用于模型中每只海龟都相同的事物。