2014-06-14 3 views
2

클릭 할 수있는 "색상 견본"을 사용하여 거북이의 색상을 결정할 수있는 기능을 NetLogo에서 만들려고합니다. 여기 내 코드는 지금까지 있습니다 :pcolor 기반의 색상 변경 - NetLogo

if mouse-down? 
[ ask patch mouse-xcor mouse-ycor 
    [ if pcolor != 0 mod 10 
    [ show pcolor 
     ask turtle whichturtle 
     [ set color pcolor] 
    ] 
    ] 
] 

(I는 사용자들이 변경하고자하는 거북이 선택할 수있는 전역 변수와 드롭 다운을 만들었습니다.)

그러나, 나는 실행할 때 이 코드에서 지정한 거북이는 사용자가 클릭 한 패치의 색상이 아니라 현재 표시된 패치의 색상으로 변경됩니다.

이 문제를 어떻게 해결할 수 있습니까? 어떤 도움이라도 대단히 감사합니다. 당신이에서 일을하고있는 상황을 추적하는 학습 :

ask turtle whichturtle [ 
    set color [pcolor] of myself 
] 

그것은 때로는 혼란 스러울 수 있습니다

답변

3

당신은 색상을 변경하기 위해 거북이를 묻는 데요 패치를 참조 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 
     ] 
    ] 
    ] 
]