海龟在撞车后经过几次滴答声后就死了吗?
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
答案 0 :(得分:1)
您的问题是,您有非正常的ticks作为全局变量。如果您考虑一下,每只海龟都需要自己的副本,因为有些会活着,有些会碰撞。这是整个代码中的问题。对于某些海龟而言,任何可能不同的内容都必须由turtles-own
语句而不是globals
语句定义。然后,您需要使用set
来更改该变量的值(对于全局变量而言),但是您必须告诉NetLogo哪些乌龟要为其更改值。这样您将得到类似的内容:
ask turtles with [<some condition>]
[ set <variable> <value>
]
答案 1 :(得分:0)
您需要一个可以在collided
中引用的新状态(也许称为collision-time
或after-collision
),当它们为{{ 1}},然后杀死它。