【发布时间】:2018-12-10 23:23:46
【问题描述】:
我是 Netlogo 的新用户, 虽然当我检查代码时,没有问题。但是,当我运行程序一段时间时,它会抛出错误消息
只有观察者可以询问所有海龟的集合。龟 0 运行 ASK 时出错。由过程调用 EXIT 由过程 Customer、GO 和按钮“go”调用
to go
customer
end
to setup-turtles
create-turtles 1
ask turtles
[
set shape "person"
set size 3
set heading -90
fd 10
setxy 15 -15
set color red
]
end
to customer
ask turtles
[
set products ( products )
rt (random 360)
fd 1
if patch-here = one-of patches with
[
pcolor = green
]
[
set pcolor orange
set products (products + 1)
]
if patch-here = one-of patches with
[
pcolor = gray
]
[exit]
show count patches with
[pcolor = green ]
move-to one-of patches with
[
pcolor = black
]
]
end
to exit
ask turtles
[
ifelse patch-here = one-of patches with
[
pcolor = gray
]
[ifelse count products >= 2
[
die
]
[move-to one-of patches with
[
pcolor = green or pcolor = black
]
]
]
[
die
]
move-to one-of patches with
[pcolor = green
]
move-to one-of patches with
[pcolor = black
]
]
end
【问题讨论】:
-
我无法用提供的代码复制错误,因为您可能省略了负责更改补丁颜色的代码。但是,我有 99% 的把握确定问题源于您嵌套了
ask语句的事实——customer过程中的ask turtles调用了exit过程,其中包含另一个ask turtles。因此,尝试exit的海龟会要求所有海龟执行此过程 - 尝试从exit过程中删除整个ask turtles代码块,看看是否遇到相同的错误。 -
为便于阅读而编辑的问题格式
标签: netlogo