Как заставить черепах перемещаться только в половине мира?

#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 это цвет участка, на котором в данный момент стоит черепаха.