如何在运行时创建动态数量的品种?
我希望我的用户能够选择品种的数量。

我想到了类似的东西

to setup_breeds

  let j 1

  while[j <= n_groups][

    breed[j]

  ]

end

其中n_groups是从滑块获取的品种数量。
但是不幸的是我不能在方法中使用breed ...

有任何想法吗?

谢谢!

最佳答案

您需要使用 breed 关键字明确声明每个品种,因此简短的答案是:不,您不能拥有动态数量的品种。

但是,您真的需要实际的NetLogo品种吗?拥有不同品种的主要目的是使每个品种具有不同的变量。如果不是这种情况,也许您可​​以摆脱group-id turtle变量的困扰。要为每个n_groups创建一定数量的海龟,您可以执行以下操作:

turtles-own [ group-id ]

to setup
  clear-all
  let n_groups 10
  let n-turtles-per-group 5
  foreach n-values n_groups [ ? ] [
    create-turtles 10 [ set group-id ? ]
  ]
  ask turtles [ set label group-id ]
  ; do something with only turtles of, e.g., group 2:
  ask turtles with [ group-id = 2 ] [
    fd 5
  ]
end

如果您认为您确实需要品种,请编辑问题以告诉我们原因,我们将为您找到解决方案。

旁注:

我使用foreach n-values n_groups [ ? ]遍历了您的n个组。这相当于:
let i 0
while [ i < n_groups ] [
  set i i + 1
]

...但可以说更多的是“NetLogo-ish”。

08-29 00:55