Как раскрасить участки внутри заданного прямоугольника

Я создал сетку, содержащую несколько прямоугольников. Эти прямоугольники представлены несколькими оранжевыми пятнами, и каждый прямоугольник ограничен белыми коридорами.

Как я могу раскрасить участки внутри заданного оранжевого прямоугольника?

Заранее спасибо.

Это начало кода:

to create-yellow-patches

ask one-of patches with [pcolor = orange] [ 
 set pcolor yellow
 foreach list pxcor to max-pxcor [ ;; I don't know how to define a list from pxcor to max-pxcor
  let x ?
  foreach list min-pycor to max-pycor [ ;; I don't know how to define a list from min-pycor to max-pycor
   let y ?
    ifelse [pcolor] of patches with [pxcor = x and pycor = y ] = orange 
    [ set pcolor yellow ] 
    [ break ] ] ] ;; I don't know what is the equivalent of break in netlogo

  foreach pxcor - 1 to min-pxcor [ ;; I don't know how to define a list from pxcor - 1 to min-pxcor
   let x ?
   foreach min-pycor to max-pycor [ ;; I don't know how to define a list from min-pycor to max-pycor
    let y ?
    ifelse [pcolor] of patches with [pxcor = x and pycor = y ] = orange 
    [ set pcolor yellow ]     
    [ break ] ] ] ;; I don't know what is the equivalent of break in netlogo
end

person Nell    schedule 15.10.2013    source источник


Ответы (1)


Вот пример кода для создания оранжевого прямоугольника из патчей:

ask patches with [pxcor >= -3 and pxcor <= 6 and pycor >= -5 and pycor <= 7] [
  set pcolor orange
]

Я предполагаю, что это не полностью отвечает на ваш вопрос. У вас уже есть несколько оранжевых и белых пятен, и они должны каким-то образом контролировать расположение прямоугольника, который вы хотите нарисовать... что-то в этом роде?

ОБНОВЛЕНИЕ

Хорошо, теперь вопрос стал намного яснее.

Есть масса разных способов решить эту проблему. Вот самый элегантный, который я могу придумать:

to setup
  clear-all
  ask patches [
    ifelse pxcor mod 5 = 0 or pycor mod 5 = 0
      [ set pcolor white ]
      [ set pcolor orange ]
  ]
end

to create-yellow-patches
  let seed one-of patches with [pcolor = orange] 
  ask seed [ turn-yellow ]
end

to turn-yellow  ;; patch procedure
  set pcolor yellow
  ask neighbors4 with [pcolor = orange] [
    turn-yellow
  ]
end

Это совершенно другой подход, чем тот, который вы пробовали. Если вы хотите придерживаться своего первоначального подхода к решению, я бы посоветовал писать циклы, используя while вместо foreach плюс break.

person Seth Tisue    schedule 16.10.2013
comment
У меня есть сетка, похожая на пример Traffic Grid с оранжевыми прямоугольниками и белыми коридорами. Я случайным образом помещаю желтое пятно в оранжевый прямоугольник. На самом деле, я пытаюсь окрасить в желтый цвет все оранжевые пятна внутри прямоугольника, в который я случайно поместил желтые пятна. - person Nell; 17.10.2013