2014-11-26 4 views
0

Я изо всех сил пытаюсь понять, как рассказать своим черепахам двигаться вперед 1 на свободный патч, как только они уже обернуты в процедуре под названием «черепаха».Перемещайте черепах на вакантный патч в NetLogo

 let ahead patch-ahead 1 
    let vacant-ahead ahead with [not any? turtles-here ] ;;this line needs fixing 
     if any? turtles  
        [turn-turtle if vacant-ahead [fd 1]] 

Он производит эту ошибку, которую я понимаю, но не могу решить, как исправить.

WITH expected input to be an agentset but got the patch (patch 1 -2) instead. 
error while solute 2 running WITH 
    called by procedure MOVE-TURTLE 
    called by procedure GO 
    called by Button 'go' 

Просто ответить на некоторые комментарии в более доступной форме: К сожалению, я не думаю, что я объяснил это очень хорошо, так как я только что капельку моего кода вне. Возможно, это имеет смысл.

to go 
ask turtles 
[move-turtle] 
end 

to move-turtle 
turn-turtle 
if (not any? turtles-on patch-ahead 1) 
[fd 1] 
end 

Так что я просто хочу этот код, чтобы переместить черепах, которые были повернутые «под черепаху» в пустой патч вперед 1, предпочтительно занимают весь участок, как если бы они были «проросли». Благодаря!

+0

Что бы вы хотели, если патч не был вакантным? –

+0

в основном ошибка говорит, что вы не можете использовать «с» на одном патче. В вашем коде вы определяете переменную «впереди» как один патч (исправление 1), а затем вы пытаетесь использовать «с» на нем, чтобы определить переменную «vacant-ahead». Это невозможно, потому что вы не можете сделать подмножество чего-то, что не является набором. Неясно, какова цель вашего кода: что именно должна делать черепаха? – drstein

+0

В основном на словах я просто хочу, чтобы черепаха была повернута, чтобы двигаться вперед 1 в свободную позицию. Если он не пуст, он ничего не делает. Я попытался использовать «и» вместо, например, для. «Пусть свободные (впереди) и (а не« черепахи »здесь)», но это тоже не помогает. –

ответ

1

Похоже, вы хотите сделать что-то совсем другое, если вы действительно хотите, чтобы ahead был одним патчем. Поэтому, возможно,

to move 
    ifelse (any? turtles-on patch-ahead 1) [ 
    turn-turtle 
    ][ 
    fd 1 
    ] 
end 
+0

Обратитесь к моим правки в основном тексте, спасибо за попытку! –

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