바로 인접한 패치에 발을 들여 놓으면 곧바로 가장 가까운 파란색 패치로 되돌아 가려고하므로 while
루프로 거북이가 첫 번째 파란색 패치에 걸릴 것입니다. 그들은 방금 떠났어). 또한 while 루프에서 발생하는 모든 사항은 단일 진드기 내에서 발생합니다. 설정의 일부로 가장 가까운 파란색 패치로 이동하려는 경우 move-to
을 사용하면됩니다. 가장 가까운 파란색 패치 으로의 이동이 중요한 경우 인 경우 while
대신 if
문을 사용하는 것이 좋습니다.
또한 두 개의 서로 다른 "모드"로 설명합니다. 먼저, 거북이가 따라 다니기를 원하는 회로로 이동하기를 원합니다. 그런 다음 해당 회로에 있다면 순회 경로를 따라 회로의 다음 파란색 패치를 대상으로하고 그 패치로 이동하십시오. 따라서 두 개의 개별 절차를 설정하고 적절한 시간에 호출하는 것이 더 쉽습니다. 거북이가 다음 (현재 표적)으로 가고자하는 위치와 그들이 수행해야하는 이동 모드를 알고 있다면 도움이 될 것입니다. 그런 다음
to setup
ca
reset-ticks
ask (patch-set patch 5 5 patch 5 -5 patch -5 5 patch -5 -5) [
set pcolor blue
]
crt 1 [
set on-circuit? false ;;; so a starting turtle knows which movement procedure to use
set my-target nobody
setxy random 30 - 15 random 30 - 15
pd
]
end
:
turtles-own [
on-circuit?
my-target
]
가 있는지 확인 그들이 정의되지 않은 변수의 기본 "0"이되지 않도록 당신이 당신의 설정에서 그 변수를 설정 : 그래서, 당신은 같은 turtles-own
변수를 설정할 수 있습니다 go
절차를 실행하여 거북이가 회로에 올라 가려고 시도 할 수 있습니다. 거짓이면, 회로에 걸어 간다면 걸어 갈 것입니다. 사실이다.
to go
ask turtles [
ifelse on-circuit? = false [ ;;; do this if turtle is not yet on the circuit
get-to-circuit
]
[ ;;; do this if the turtle has been designated as on the circuit
walk-circuit
]
]
tick
end
지금 당신은 당신의 get-to-circuit
및 walk-circuit
절차를합니다. 나는 내 get-to-circuit
을 설정하는 방법을 보여,하지만 당신은 walk-circuit
의 나머지 부분을 알아낼 수 있는지 볼 수 있습니다 : 그것은 완벽하게 작동
to get-to-circuit
set my-target min-one-of other patches with [pcolor = blue ] [ distance myself ]
face my-target
fd 1
if distance my-target < 1 [
move-to my-target
;;; This lets the turtle know it can switch to "walk-circuit" on the next tick
set on-circuit? true
set heading one-of [ 0 90 180 270 ]
]
end
to walk-circuit
if my-target = nobody [
set my-target one-of (other patches with [ pcolor = blue ]) in-cone 10 180
]
?
?
? ...
! 고맙습니다! –