我正在尝试在NetLogo中创建一个允许我使用可点击的"颜色样本的功能"确定乌龟的颜色。到目前为止,这是我的代码:
if mouse-down?
[ ask patch mouse-xcor mouse-ycor
[ if pcolor != 0 mod 10
[ show pcolor
ask turtle whichturtle
[ set color pcolor]
]
]
]
(我创建了一个带有全局变量的下拉列表,允许用户选择他们想要更改的龟。)
但是,当我运行此代码时,指定的乌龟会将其颜色更改为当前所在补丁的颜色,而不是用户点击的补丁的颜色。
我该如何解决这个问题?任何帮助深表感谢。
答案 0 :(得分:3)
你需要使用myself
来引用要求乌龟改变颜色的补丁:
ask turtle whichturtle [
set color [pcolor] of myself
]
它可能会让人感到困惑,有时候:学会跟踪你正在做的事情是掌握NetLogo的一个重要部分......
避免在ask
的不同级别中迷失的一种方法是将代码分配给代码执行中的局部变量,在那里您确切知道自己的位置。在你的情况下,它可能是这样的:
if mouse-down? [
ask patch mouse-xcor mouse-ycor [
if pcolor != 0 mod 10 [
let chosen-color pcolor
ask turtle whichturtle [
set color chosen-color
]
]
]
]