저는 Netlogo와 stackoverflow를 처음 접했지만 다른 게시물은 이미 저에게 많은 도움이되었습니다.거북이 서로 마주 보는 방법, 3 tick을 기다린 후 방황하고 계십니까?
저는 현재 에이전트가 임의로 공간을 돌아 다니며 만날 때마다 멈추게하는 모델을 프로그램하려고합니다. 여기에서 "만남"은 "서로를 지나친다"는 의미입니다. in-radius 2
. 그들은 각각 face
이어야하며, 2 tick을 기다린 후 다음 상담원을 찾을 때까지 계속 움직여야합니다.
NzHelen's question on a timer을 사용해 보았지만 실제로 성공하지 못했습니다.
지금까지 나는 서로 마주 할 수있었습니다. 내 코드의 올바른 위치에 tick
- 명령을 넣는 데 문제가 있습니다. (편집 : 이것은 세스 덕분에 wait
- 명령을 내림으로써 해결되었습니다. -> 나는 모든 거북이가 움직이지 않고 서로 만나는 것을 좋아합니다.) 내가 노력하고있는 또 다른 한 가지는 예를 들어 만나는 시간에 패치가 깜박이거나 만날 때 주변에 나타나는 서클 등 모임의 시각적 표현 일종입니다. wait
- 명령을 사용하면 모든 것이 다시 중지되므로 방지하고 싶습니다.
아래 코드는 다음과 같습니다.
to go
tick
ask turtles
[
wander
find-neighbourhood
]
ask turtles with [found-neighbour = "yes"]
[
face-each-other
]
ask turtles with [found-neighbour = "no" or found-neighbour = "unknown"]
[ wander ]
end
;-------
;Go commands
to wander
right random 50
left random 50
forward 1
end
to find-neighbourhood
set neighbourhood other turtles in-radius 2
if neighbourhood != nobody [wander]
find-nearest-neighbour
end
to find-nearest-neighbour
set nearest-neighbour one-of neighbourhood with-min [distance myself]
ifelse nearest-neighbour != nobody [set found-neighbour "yes"][set found-neighbour "no"]
end
to face-each-other ;;neighbour-procedure
face nearest-neighbour
set found-neighbour "no"
ask patch-here [ ;; patch-procedure
set pcolor red + 2
;wait 0.2
set pcolor grey + 2
]
if nearest-neighbour != nobody [wander]
rt 180
jump 2
ask nearest-neighbour
[
face myself
rt 180
jump 2
set found-neighbour "no"
]
end
주석이 달린 코드가 많아 들여 쓰기가 힘들 때 코드를 읽는 것이 정말 어렵습니다. 그 이유는 누구도이 질문에 답하지 않으려 고하는 이유 일 수 있습니다. 읽기 쉽고 쉬운 코드가 아닙니다. –
나에게 뛰어 오는 한 가지 점은 당신이 분명히 '대기'를 사용하고 싶지 않다는 것이다. 어느 거북이조차도 '기다리는'동안 모든 것이 멈 춥니 다. –
두 가지 모두 매우 유용한 설명입니다. 감사합니다. 그에 따라 편집하려고합니다. –