微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

循环代码的特定部分而不丢失记录的变量

如何解决循环代码的特定部分而不丢失记录的变量

我试图找到一种方法来循环特定的代码块,而不会丢失在块内完成的任何记录属性

即我的代码流程是这样的:

setup environment (button)

setup drivers (button)

go: (button which incorporates the below)

1. trip assign

2. move-drivers

3. check-distance

tick

end

代码用户输入的一些驱动程序开始,一旦我在设置后点击开始,它们就会被分配一个特定的行程,其中包含与特定目的相关的颜色、行驶距离限制等变量,然后开始移动以系统的方式。每次向前移动都记录为 +1 行驶距离,一旦达到指定的限制,它们就会停止。

问题是,一旦每个司机停下来(到达距离 lim),我想将其记录为他们的 1 次行程,并循环(由我创建的变量确定的次数)将他们返回到行程分配、运动和检查距离部分(带有新的新分配)而不会丢失我的总距离数字或他们记录的任何变量。即,我想为单次运行中记录的每个驾驶员模拟多次行程。

解决方法

我不确定您的代码的详细信息,但您可以尝试向驱动程序添加另一个属性,从 go 中取出行程分配,并且不对驱动程序使用 stop。这是示例:

; assume you specify your turtle breed as drivers
drivers-own
[ total-distance ]

to setup-environment
  ; write your original code
end

to setup-drivers
  ; write your original code
  trip-assign
end

to go
  move-drivers
  check-distance
  tick
end

to check-distance
  ask drivers
  [ if distance = distance-limit
    [ set total-distance (total-distance + distance)
      set distance 0 ;reset the distance ​]
 ​   trip-assign ;assign again for next trip
  ]
end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。