2016-12-22 1 views
0

У меня есть список, который хранит список координат патчей.Доступ к патчу через координаты, хранящиеся в списке

let coor [ [0 1] [ 1 0] [1 -1] ] 

Теперь я хочу спросить патч на месте 2-го элемента списка, чтобы изменить свой цвет на красный.

ask patch (item 1 coor) [ set pcolor red ] 

Это дает ошибку, что исправление ожидает число вместо списка или блока. Как заставить NetLogo понять, что (item 1 coor) - это набор из двух чисел?

Любой другой способ приблизиться к этому? Я также попытался использовать расширение «table» для этого, но там тоже была проблема.

+0

Одним из способов является сохранение первой и второй координат в отдельных списках, скажем, x_cor & y_cor. ask patch (item 1 x_cor) (item 1 y_cor) [set pcolor red] –

ответ

0

Просто используйте соответствующий репортер:

to-report patch-at-xy [#xy] 
    let _x item 0 #xy 
    let _y item 1 #xy 
    report patch _x _y 
end 

Это требует незначительных изменений в коде выше:

to test 
    let coor [ [0 1] [ 1 0] [1 -1] ] 
    ask patch-at-xy (item 1 coor) [ set pcolor red ] 
end 

Тем не менее, вы почти наверняка должны хранить список исправлений, а не их координаты.

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