Почти всегда tick
идет как последняя команда в процедуре go.Конечно, это то, что вы должны делать, пока вы новичок в NetLogo.Сказав это, ваш код не заработает.
Думайте о тиках как о счетчике шагов времени.Каждый цикл в процедуре go должен выполнять все действия, для которых требуется один временной шаг, а также продвигать счетчик временных шагов.Таким образом, вам не нужна команда every
, у вас есть только процедура movecars, вызванная процедурой go, и ask turtles [forward random 10 / 10]
в процедуре movecars.
Это довольно фундаментальный концептуальный пробел, и я предлагаю вампросмотрите некоторые модели в библиотеке моделей NetLogo, сосредоточив внимание на связи между процедурой go и процедурой перемещения и течением времени.Или, возможно, сделать учебники снова.Кроме того, начните свою модель проще.Просто создайте одну машину и заставьте ее двигаться, а потом переживайте о нескольких машинах, цветах и узнайте, кто победит.Добавьте маленький кусочек вашей модели и заставьте его работать, прежде чем добавлять следующий кусочек.
Попробуйте это:
to go
movecars
endrace
tick
end
to movecars
ask turtles [ fd random 10 / 10]
end
to endrace
ask turtles [ if xcor >= 12 [die] ]
end