#netlogo
#netlogo
Вопрос:
Я создал мир, разделенный на две части с помощью команды ask patches with [ pxcor < 0] [set pcolor blue] ask patches with [pxcor > 0] [set pcolor green]
. В одной из них 100 черепах, из которых 5 заражены, и столько же в другой части. Моя проблема состоит в том, чтобы заставить черепах перемещаться только в их части мира. Поэтому я хочу, чтобы черепахи с pcolor = blue перемещались случайным образом во втором и третьем квадрантах (pxcor <0), а черепахи с pcolor = green — в первом и четвертом квадрантах (pxcor> 0). как мне поступить?
Это код:
turtles-own
[
sick?
sick-time]
to setup
ca
ask patches with [ pxcor < 0 ] [set pcolor blue] ; we want divide the world in two parts: the blue one in the north of Italy
ask patches with [pxcor > 0 ] [set pcolor green]; the white one is the south of Italy
ask patches with [pxcor = 0 ] [set pcolor white ] ; represent the border
create-turtles 200 ; we create a population made up for 200 people
[ set size 1
set shape "person"
set sick-time 0
get-healthy]
ask n-of 100 turtles ; 100 of this one live in north of Italy
[setxy 12 random-ycor ]
ask n-of 100 turtles ; another 100 in the south
[setxy -12 random-ycor
]
ask n-of 5 turtles with [pcolor = blue] ; we want infect 5 people for each world
[get-sick ]
ask n-of 5 turtles with [pcolor = green]
[get-sick ]
reset-ticks
end
to get-healthy
set sick? false
set color white
end
to get-sick
set sick? true
set color yellow
set shape "circle"
set sick-time sick-time 1
end
to go
ask turtles
[
move ]
tick
end
to move
rt random-float 360
fd 1
end
Комментарии:
1. пожалуйста, дайте нам больше информации. ваш язык программирования и абстракция вашей проблемы. также используйте `ваш код`, чтобы показать нам свой код.
2. Я надеюсь, что теперь это более понятно! спасибо за ваш ответ
3. Вам не нужно предоставлять весь код, только соответствующие биты. В данном случае это процедуры, которые разделяют мир и перемещают черепах.
Ответ №1:
Ваша процедура перемещения выглядит следующим образом:
to move
right random-float 360
forward 1
end
Если вы хотите, чтобы они просто оставались на месте, если перемещение приведет их не в ту половину, вы можете использовать patch-ahead
для тестирования патча, на который они будут перемещаться. Я думаю, вы хотите, чтобы они не переходили на другой цветной участок. Один из способов:
to move
right random-float 360
if [pcolor] of patch-ahead 1 = pcolor [forward 1]
end
[pcolor] of patch-ahead 1
возвращает цвет участка, который находится на одну единицу расстояния впереди, то есть туда, куда черепаха пытается переместиться. pcolor
это цвет участка, на котором в данный момент стоит черепаха.