碰撞后几刻,海龟不得不死亡

时间:2019-03-08 04:05:20

标签: netlogo

海龟在撞车后经过几次滴答声后就死了吗?

TICK位置存在问题,Turtles-own及其实施存在一些问题吗?

海龟在撞车后经过几次滴答声就死了

  turtles-own [ functioning ]  
globals [ non-functioning-ticks    ]
    to setup

  clear-all
  ;ask turtles [set functioning True]
 create-bikes 1 [
    set functioning true
   ]]
  create-cycles 1 [set functioning true]
end
to go
 ifelse functioning = true
  [        show functioning
    ask turtles [ move ]]
  [        show functioning
    ask turtles [after-collision]
[
  if not any? turtles [ stop ]
  tick
end
to move
 ask bikes [set color blue
 fd 1 ]
ask cycles [set color blue
    fd 1]
ask turtles with radius 1
      set functioning False
      set color red    ]]]
end   
to after-collision    
  ifelse non-functioning-ticks >= 3
  [ die ]
  [        set non-functioning-ticks non-functioning-ticks + 1  ]
end

2 个答案:

答案 0 :(得分:1)

您的问题是,您有非正常的ticks作为全局变量。如果您考虑一下,每只海龟都需要自己的副本,因为有些会活着,有些会碰撞。这是整个代码中的问题。对于某些海龟而言,任何可能不同的内容都必须由turtles-own语句而不是globals语句定义。然后,您需要使用set来更改该变量的值(对于全局变量而言),但是您必须告诉NetLogo哪些乌龟要为其更改值。这样您将得到类似的内容:

ask turtles with [<some condition>]
[ set <variable> <value>
]

答案 1 :(得分:0)

您需要一个可以在collided中引用的新状态(也许称为collision-timeafter-collision),当它们为{{ 1}},然后杀死它。