每一定数量的滴答声都不会发生动作
Action not happening every certain amount of ticks
此代码用于动物的繁殖。它应该每 10 个刻度发生一次,但它立即发生,我不知道为什么。他们也有能量。复制设置为随机显示女性。
在此先感谢您的帮助。
turtles-own[ energia edad]
breed[perros perro]
to setup
resize-world 0 80 0 60
clear-all
ask patches[
set pcolor green]
create-perros 50
[
set size 3 ;; easier to see
set color yellow
setxy (41 + random 39) random 60
set heading random 360
set energia 100
set edad 1
]
reset-ticks
end
to go
ask perros [ set edad edad + 1]
ask perros [
morir-perros
moverse-perros
reproducirse
]
tick
end
to morir-perros
if edad > 15 [die]
if energia < 1 [die]
end
to moverse-perros
set heading random 360 fd 5
set energia energia - 5
end
to reproducirse
if ticks mod 10 = 0 [ if random 100 > 50 [set energia energia - 60
hatch 1 [ rt random-float 360 fd 2
set energia (energia + 60) / 3]]]
end
现在您可以 tick
在 go
过程结束时增加时间步长。在任何 model 中,ticks
默认从 0 开始,因此您的 model 计算 ticks
mod 10:
observer> show 0 mod 10
observer: 0
因为这将满足 reproducirse
中的条件,所以代码被评估。您可以通过多种方式处理此问题。最简单的方法可能是 mod 在 reproducirse
中验证您的 if
语句 - 例如:
to reproducirse
if ticks > 0 and ticks mod 10 = 0 [ if random 100 > 50 [set energia energia - 60
hatch 1 [ rt random-float 360 fd 2
set energia (energia + 60) / 3]]]
end
此代码用于动物的繁殖。它应该每 10 个刻度发生一次,但它立即发生,我不知道为什么。他们也有能量。复制设置为随机显示女性。
在此先感谢您的帮助。
turtles-own[ energia edad]
breed[perros perro]
to setup
resize-world 0 80 0 60
clear-all
ask patches[
set pcolor green]
create-perros 50
[
set size 3 ;; easier to see
set color yellow
setxy (41 + random 39) random 60
set heading random 360
set energia 100
set edad 1
]
reset-ticks
end
to go
ask perros [ set edad edad + 1]
ask perros [
morir-perros
moverse-perros
reproducirse
]
tick
end
to morir-perros
if edad > 15 [die]
if energia < 1 [die]
end
to moverse-perros
set heading random 360 fd 5
set energia energia - 5
end
to reproducirse
if ticks mod 10 = 0 [ if random 100 > 50 [set energia energia - 60
hatch 1 [ rt random-float 360 fd 2
set energia (energia + 60) / 3]]]
end
现在您可以 tick
在 go
过程结束时增加时间步长。在任何 model 中,ticks
默认从 0 开始,因此您的 model 计算 ticks
mod 10:
observer> show 0 mod 10
observer: 0
因为这将满足 reproducirse
中的条件,所以代码被评估。您可以通过多种方式处理此问题。最简单的方法可能是 mod 在 reproducirse
中验证您的 if
语句 - 例如:
to reproducirse
if ticks > 0 and ticks mod 10 = 0 [ if random 100 > 50 [set energia energia - 60
hatch 1 [ rt random-float 360 fd 2
set energia (energia + 60) / 3]]]
end