我正在尝试做的部分工作是让一种海龟四处移动,但是当一只海龟到达目的地时,海龟会等待一定数量的滴答声,然后再继续吗?也可以让海龟根据它们的目的地(不同的补丁颜色)等待不同数量的滴答声。是制作海龟品种或全局变量来计算滴答声的情况吗?希望相关的代码如下。
最佳答案
你是对的,这可以通过让海龟计算它们在一 block 补丁上的刻度数来完成。此外,这必须是海龟变量而不是全局变量,因为每只海龟对此都有不同的值
我使用的方法是这样的:
- 一旦乌龟到达目的地,将
ticks
(记录到现在为止已通过的滴答数的全局变量)记录到乌龟变量中,比如ticks-since-here
。这就像一个时间戳。 在每个连续的滴答声中检查当前时间
ticks
全局变量和ticks-since-here
海龟变量之间的差异。如果这变得大于允许乌龟停留在补丁上的刻度数,让它选择并移动到新的目的地。繁殖 [visitors visitor]
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
关于wait - 让海龟等待 x 刻度数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22634312/