为什么net徽标显示运行时错误使用with命令



首次海报。我是一名在netlogo工作的学生。

我正在运行游戏,如果权力的模型和有一个错误。代码可以工作,但是当人类打败了长夜,在文本出现之前,我得到了一个错误信息。

代码是:

If season = “winter” and count whitewalkers = 0 [
set season “spring”
ask patches with [ snow? ][
set snow? false
if else resources = 0 [
set pcolor brown
][
set pcolor green
]
]
user-message “The Night King has been defeated! Summer is back.”
stop
]

错误信息是:

WITH expected a true/false value from (patch 70 253), but got 0 instead. Error while observer running WITH Called bu procedure GO Called by button “go”

多谢

我试过删除括号,但我认为它们是必要的。我在括号之间加了一些空格,但这没有什么区别。

NetLogo不执行类型推断,并且在这些原语末尾的?是一种惯例,用于向代码的读者表明它是布尔类型,但不是一种语言特性。NetLogo的编译器不会立即给名称中有?的变量赋值一个布尔值,而只是假设它是一个整数并赋值0

您可能需要在代码的其他地方使用snow?变量之前将其设置为默认值,可能是在模型的setup过程之上。

下面是一段简单的代码来说明如何在NetLogo中初始化布尔变量:

patches-own [snow?]
to show-snow
show "before assigning bool value"
show [snow?] of patches

ask patches [ set snow? false ]

show "after assigning bool value"
show [snow?] of patches
end

输入图片描述

最新更新