我想做的部分原因是让一群海龟四处移动,但当一只海龟到达目的地时,海龟会在继续之前等待一定数量的蜱虫?也可以根据目的地(不同的补丁颜色)使海龟等待不同数量的刻度。是否需要制作海龟品种或全局变量来计算滴答数?希望相关的代码如下。
答案 0 :(得分:2)
你是对的,这可以通过让海龟计算它们在补丁上的滴答数来完成。此外,这必须是一个乌龟变量,而不是一个全局变量,因为每个乌龟将具有不同的值
我使用的方法是:
ticks
(记录到目前为止已经过去的蜱数的全局变量)变成乌龟变量ticks-since-here
。这就像一个时间戳。 在每个连续的勾选中检查当前时间ticks
全局变量和ticks-since-here
乌龟变量之间的差异。如果这大于允许乌龟留在补丁上的滴答数,让它选择并移动到新目的地。
繁殖[访客访客]
globals [ number-of-visitors ]
visitors-own [
; visitors own destination
destination
ticks-since-here
]
to go
ask visitors [
move
]
tick
end
to move
; Instructions to move the agents around the environment go here
; comparing patch standing on to dest, if at dest then choose random new dest
; then more forward towards new dest
ifelse ( patch-here = destination )
[
if ticks - ticks-since-here > ticks-to-stay-on-patch patch-here
[
set ticks-since-here 0
set destination one-of patches with
[
pcolor = 65 or pcolor = 95 or pcolor = 125 or pcolor = 25 or pcolor = 15 or pcolor = 5
]
]
]
[
face destination
forward 1
if ( patch-here = destination )
[
set ticks-since-here ticks
]
]
end
to-report ticks-to-stay-on-patch [p]
if [pcolor] of p = 65
[
report 6
]
if [pcolor] of p = 95
[
report 5
]
if [pcolor] of p = 125
[
report 4
]
if [pcolor] of p = 25
[
report 3
]
if [pcolor] of p = 15
[
report 2
]
if [pcolor] of p = 5
[
report 1
]
end
to setup-people
;;;; added the following lines to facilitate world view creation
ask patches
[
set pcolor one-of [65 95 125 25 15 5]
]
set number-of-visitors 100
;;;;
create-visitors number-of-visitors
[
ask visitors
[
; set the shape of the visitor to "visitor"
set shape "person"
; set the color of visitor to white
set color white
; give person a random xy
setxy (random 50) (random 50)
; set visitors destination variable
set destination one-of patches with
[
pcolor = 65 or pcolor = 95 or pcolor = 125 or pcolor = 25 or pcolor = 15 or pcolor = 5
]
]
]
end