是否有一个解决方案,只有观察员可以问所有海龟在Netlogo的集合?
下面链接的代码不起作用,因为当您运行代码时,它会告诉您:是否有一个解决方案,只有观察员可以问所有海龟在Netlogo的集合?,netlogo,Netlogo,下面链接的代码不起作用,因为当您运行代码时,它会告诉您: Only the observer can ASK the set of all turtles. error while turtle 35 running ASK called by procedure MOVE-TURTLES called by procedure GO called by Button 'go' 我已经检查了代码,但找不到解决方案 globals [marked-patches] turtles
Only the observer can ASK the set of all turtles.
error while turtle 35 running ASK
called by procedure MOVE-TURTLES
called by procedure GO
called by Button 'go'
我已经检查了代码,但找不到解决方案
globals [marked-patches]
turtles-own [Angle lastAngle]
to setup
clear-all
create-turtles number [ setxy random-xcor random-ycor]
ask turtles [
set color red
set size 1
set Angle random-float 0.05]
reset-ticks
end
to go
ask patches [set pcolor yellow]
ask turtles[
move-turtles
set lastAngle Angle
set Angle random 360
right Angle
do-return-plot]
do-count-patches
if (count patches = marked-patches) [stop]
tick
end
to plot-patch-count
set-current-plot "Area Covered"
set-current-plot-pen "Number of Patches"
set marked-patches count patches with[pcolor = yellow]
plot marked-patches
end
to do-return-plot
set-current-plot "Return Plot"
plotxy lastAngle Angle
end
to do-count-patches
set marked-patches count patches with[pcolor = yellow]
show marked-patches
end
to move-turtles
ask turtles [
rt random 360
fd 1
set pcolor yellow
pen-down]
ifelse show-travel-line? [pen-down][pen-up]
end
这个错误是为了阻止你犯一个非常常见的错误。看看你的围棋程序-它是
询问海龟[移动海龟…]
,然后你在移动海龟程序中做的第一件事是再次询问海龟。这就是信息告诉你的,你有一只乌龟要求所有的乌龟做点什么。如果你有10只乌龟,那么每只乌龟会移动10次,因为每只乌龟告诉所有乌龟移动
在您的情况下,您需要考虑订单。你想让一只乌龟移动,然后计算角度等等,在下一只乌龟开始之前做所有的事情。如果是这样,则在go程序中保留询问海龟
,并将其从移动海龟程序中删除。这将修复消息
但是,在go程序和move turtles程序中也有一些绘图。您可能还想考虑如何将命令分解为过程,每个过程只做一件事和一件事。我发现,对于刚接触NetLogo的人来说,让go程序运行一系列要调用的程序更容易,这些程序执行移动、绘图等操作。然后,这些程序从
询问海龟开始。这种方法的好处是,ask-turtles
位于代码中,它们被要求执行命令。该错误是为了阻止您犯一个非常常见的错误。看看你的围棋程序-它是询问海龟[移动海龟…]
,然后你在移动海龟程序中做的第一件事是再次询问海龟。这就是信息告诉你的,你有一只乌龟要求所有的乌龟做点什么。如果你有10只乌龟,那么每只乌龟会移动10次,因为每只乌龟告诉所有乌龟移动
在您的情况下,您需要考虑订单。你想让一只乌龟移动,然后计算角度等等,在下一只乌龟开始之前做所有的事情。如果是这样,则在go程序中保留询问海龟
,并将其从移动海龟程序中删除。这将修复消息
但是,在go程序和move turtles程序中也有一些绘图。您可能还想考虑如何将命令分解为过程,每个过程只做一件事和一件事。我发现,对于刚接触NetLogo的人来说,让go程序运行一系列要调用的程序更容易,这些程序执行移动、绘图等操作。然后,这些程序从询问海龟开始。这种方法的好处是,ask-turtles
位于代码中,它们被要求执行命令