我有我的海龟自己的 age
作为他们的变量之一,我将 age
设置为刻度,这样我的海龟在达到一定数量的刻度时就会老化。但是,这会导致所有海龟同时老化(例如,ticks = 5 时),无论它们是何时创建的。
有没有办法让乌龟创建时开始年龄?因此,如果海龟在第 5 个刻度处创建,它的年龄从 0 开始,但仍然等于 1 个刻度的长度?
是的!对不起!这是我在将其放入实际模型之前一直在玩的代码
breed [kids kid]
breed [adults adult]
breed [elderlies elderly]
turtles-own [age
z]
to setup
clear-all
create-kids 10
[setxy random-xcor random-ycor]
set-default-shape kids "fish"
create-adults 10
[setxy random-xcor random-ycor]
set-default-shape adults "person"
set-default-shape elderlies "cow"
clear-output
reset-ticks
end
to go
ask kids [birthday
move]
ask adults [birthday
reproduce-adults
move]
tick
end
to birthday
set age ticks
if age > 5 [set breed adults]
if age > 10 [set breed elderlies]
if age > 15 [die]
end
to reproduce-adults
set z random 100
if z > 65
[ hatch-kids 1]
end
to move
rt random 360
fd 1
end
最佳答案
如果您希望 age
等于自创建海龟以来的刻度数,Alan 的解决方案是很好的。如果您想要不同的年龄衡量标准,您可以将该数字除以另一个数字。例如,如果刻度代表月份,您可以除以 12 得到年份。
另一种方法是添加 birth-tick
——海龟“出生”的刻度——作为 turtles-own
变量。假设您希望每 5 个刻度增加年龄。然后你可以像这样写 increment-age
:
to increment-age
let age-in-ticks birth-tick - ticks
if (age-in-ticks > 0) and (age-in-ticks mod 5 = 0) [
set age (1 + age)
]
end
包含
mod
的表达式测试自出生以来的滴答数是否能被 5 整除。编辑:我应该澄清一下,您需要在创建每只海龟时将
birth-tick
设置为 ticks
的值。关于netlogo - 给海龟设定年龄,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29997530/