netlogo中如何在多个程序中使用to-report

how to use to-report in multiple procedures in netlogo

我正在编写 NetLogo 程序,但遇到了问题。

我有 'to-report' 程序,它报告了一个值。在这份报告中,我听取了用户的意见。 但是我想在多个其他程序中使用报告的值(输出)。

to-report initial-goat
    let goats-number read-from-string user-input "How many goats are there ?"
    while [goats-number > 100] [set goats-number read-from-string user-input "Please enter a value below or equal to 100 "] 
    report goats-number
end

to goat-create
   create-turtles initial-goat
end

to calculate
  let x initial-goat
  let alive count turtles
  let dead (x - alive)
end

这里当我使用程序计算和创建山羊程序时,程序要求用户输入两次。如何避免这种情况? 谢谢。 最好的问候,

事实上,假设计算过程在每个时间步都运行,您的代码将多次请求初始山羊。由于此信息永远不会改变,因此您应该将其存储在变量中。有两种选择。

如果您想使用问题格式,则:

globals [initial-goat]

to get-initial-goat
    set goats-number read-from-string user-input "How many goats are there ?"
    while [goats-number > 100] [set goats-number read-from-string user-input "Please enter a value below or equal to 100 "] 
end

to goat-create
   create-turtles initial-goat
end

to calculate
  let alive count turtles
  let dead (initial-goat - alive)
end

但更常用的方法是在界面上简单地放置一个滑块,而不是问一个问题。你会有一个滑块(上限为 100)然后你只需要:

to goat-create
   create-turtles initial-goat
end

to calculate
  let alive count turtles
  let dead (initial-goat - alive)
end