首页 > 解决方案 > NetLogo 3.1.5 版中的错误:没有定义任何名为 PICKUP-NEAREST-CIRCLE

问题描述

我是netlogo的初学者,我想制作一个程序,我可以将海龟拖到任何我想去的地方(通过单击它来更改海龟的位置并将其拖到另一个地方)这是我找到的代码youtube,但它不起作用!我收到此错误“未定义任何名为 PICKUP-NEAREST-CIRCLE 的内容”

globals [
previous-button-state
anybody-picked-up?
circle-picked]

to setup
ca
create-turtles 10
ask turtles[
set shape "circle"
set size 3 
setxy random-xcor random-ycor
]
set anybody-picked-up? false
set previous-button-state "up"
end
to go
if mouse-inside?[
  if mouse-down? and previous-button-state ="up"[
  try-to-pickup-nearest-circle
  ifelse anybody-picked-up?
  [set previous-button-state "down-and-dragging"]
  [set previous-button-state "just down"]  
  ]
  if not mouse-down? [
  set anybody-picked-up? false
 set previous-button-state "up"
  ]
  ]
  ;waite .01
  end 

 to try-to pickup-nearest-circle
let candidate min-one-of turtles [distancexy mouse-xcor mouse-ycor]
 ask condidate [
 if distancexy mouse-xcor mouse-ycor < size / 2 [
 set anybody-piced-up? true 
 set circle-picked candidate 
 ]
 ]
 end 

标签: netlogo

解决方案


您的程序中至少有三个拼写错误try-to-pickup-nearest-circle:第一行缺少“-”,第三行拼写错误“condidate”,第五行拼写错误“piced”。更正后,它会是

to try-to-pickup-nearest-circle
  let candidate min-one-of turtles [distancexy mouse-xcor mouse-ycor]
  ask candidate [
    if distancexy mouse-xcor mouse-ycor < size / 2 [
      set anybody-picked-up? true 
      set circle-picked candidate 
    ]
  ]

当 NetLogo 告诉您它找不到某些东西时,首先要查找的是错字。此外,如果您在第 4 分钟左右再次查看视频,您会发现您的go程序缺少一个if块。

if mouse-down? and previous-button-state = "down-and-dragging" [
  ask circle-picked [ setxy mouse-xcor mouse-ycor ]
]

这是在拖动圆圈时实际移动圆圈的代码部分。加上那个,你应该没问题。

NetLogo 3.5.1 是一个非常老的版本。我建议下载最新版本。


推荐阅读