Этот вопрос является продолжением предыдущего вопроса. Netlogo Проращивание черепах через равные промежутки времени
При запуске кода установите размер черепахи примерно на 0,4. Я столкнулся со следующей проблемой: (см. рисунок ниже)
На рисунке 2 вы можете заметить черную дыру, где нет черепах. Это нежелательно, и это то, что я намерен исправить. Таким образом, росток должен начинаться с края участка, а не с центра.
Спасибо.
КОД: (Ответ Николя Пайетта на Вопрос)
to fill-wall [ d ]
set d precision d 1 ; make sure d is a multiple of 0.1
let n precision (d / 0.1) 0 ; interval at which to hatch
ask one-of possible-next-patches [
sprout 1 [
hatch 1
let i 0
let next-patch my-next-patch
while [ next-patch != nobody ] [
face next-patch
while [ patch-ahead 0.55 != nobody and [ pcolor ] of patch-ahead 0.55 = black ] [
fd 0.1
setxy precision xcor 1 precision ycor 1 ; avoid floating point imprecisions
set i i + 1
if i mod n = 0 [ hatch 1 ]
]
set next-patch my-next-patch
]
die
]
]
end
to-report possible-next-patches
let empty-black-patches patches with [ pcolor = black and not any? turtles-here ]
report empty-black-patches with [
count neighbors4 with [ member? self empty-black-patches ] = 1
]
end
to-report my-next-patch
report one-of possible-next-patches with [ member? self [ neighbors4 ] of myself ]
end
Вот как вы могли бы его использовать:
to setup
ca
; draw the background:
ask patches with [ abs pxcor != max-pxcor and abs pycor != max-pycor ] [ set pcolor grey ]
ask patches with [ pycor = max-pycor and abs pxcor <= 1 ] [ set pcolor white ]
set-default-shape turtles "circle 2"
fill-wall 0.3
end
Ограничения:
d
должно быть кратно 0,1- необходимо отключить перенос мира