2016-12-06 13 views
1

Я хочу выбрать все патчи на случайном расстоянии от всех черепах в симуляции и сбросить их цвет до желтого. Это по существу рисует круг пятен вокруг каждой черепахи в симуляции. Я пробовал несколько разных вариантов без успеха. Просматривая этот форум, я нашел код, который выглядит многообещающим, но все еще имеет некоторые проблемы (размещен здесь). Я ценю любые предложения по настройке этого кода или использованию чего-то другого для решения этой проблемы.выберите все патчи на расстоянии x от черепахи

let eps2 eps 
foreach [ eps2 ] 
    [ 
     ask patches with 
    [ 
     distance myself > eps2 - 0.5 and 
     distance myself < eps2 + 0.5 
    ] 
    [ 
    set pcolor yellow 
    ] 
] 

САП переменная черепаха так с помощью команды LET позволяет мне обойти, используя переменную черепахи в контексте заплаты.

Команда foreach не распознает eps, потому что она не является константой, есть ли другая команда, которую я мог бы использовать здесь?

ответ

1

Вы можете использовать list (см. Ниже), но ... зачем вы хотите получить список? В его нынешнем виде нет необходимости использовать список.

to setup 
    ca 
    crt 1 
    ask turtle 0 [test] 
end 
to test 
let eps2 10 
foreach (list eps2) ;you can use `list` 
    [ 
     ask patches with 
    [ 
     distance myself > eps2 - 0.5 and 
     distance myself < eps2 + 0.5 
    ] 
    [ 
    set pcolor yellow 
    ] 
] 
end 

Добавление:

Поскольку вы указываете, что вы на самом деле не нужен этот список, вы можете попробовать что-то вдоль линий следующее:

to test2 
    ca 
    crt 1 
    ask encirclingPatches turtle 0 10 1 [set pcolor yellow] 
end 

to-report encirclingPatches [#t #dist #width] 
    let _w2 (#width/2) 
    report patches with [ 
    distance #t > #dist - _w2 
    and 
    distance #t < #dist + _w2 
    ] 
end 
+0

Спасибо, это работает отлично , Чтобы ответить на ваш вопрос, мне не нужно создавать список eps2. Моя главная проблема заключалась в выборе патчей, которые находились на расстоянии eps (+/- 0,5) от черепахи. Я был бы открыт для других способов кодирования этого раздела, но это был самый близкий пример, который я мог найти в том, что я пытаюсь сделать. Раньше я использовал радиус, но не мог найти способ выбрать только точки периметра. – bmarcek

 Смежные вопросы

  • Нет связанных вопросов^_^