Я неправильно использую n-функции в netlo go? - PullRequest
1 голос
/ 11 апреля 2020

Я создаю код, который должен придать определенному количеству черепах статус 1, а остальным - 0, число рассчитывается с использованием ползунковых входов интерфейса. Я пытался заставить программу использовать n-of, но она превращает больше, чем желаемое количество черепах, в разновидность 1 (для черепах установлено предыдущее состояние 0).

код ниже (переключатель для единственное - изменить только на одну черепаху, а тумблер предназначен для моделирования кувырков и бега):

to spawn
  ifelse (single = false )
  [create-turtles N  [
    set color black
    set xcor 0
    set ycor 0
    set heading random-float 360
    set status 0
    if (tumble = true)
    [
      print (N * p1 / (p1 + p2))
      ask n-of (N * p1 / (p1 + p2)) turtles [set status 1 set color red]]
    ]
  ]
  [create-turtles 1  [
    set color black
    set xcor 0
    set ycor 0
    set heading random-float 360
    pendown
  ]]

end

1 Ответ

2 голосов
/ 11 апреля 2020

Проблема в том, что вы разместили оператор ask n-of. Код - это скобки после того, как create-turtles N выполняется для каждой созданной черепахи, поэтому каждый из N созданных черепах, в свою очередь, просит n-of ... черепах установить статус 1. Вы получите намного больше превращенных черепах, чем ты хочешь. Перемещение блока if (tumble ... из блока create-turtles должно привести к его выполнению только один раз после создания всех черепах N.

to spawn
  ifelse (single = false ) [
    create-turtles N  [
      set color black
      set xcor 0
      set ycor 0
      set heading random-float 360
      set status 0
    ]
    if (tumble = true) [
      print (N * p1 / (p1 + p2))
      ask n-of (N * p1 / (p1 + p2)) turtles [set status 1 set color red]
    ]
  ]
  [create-turtles 1  [
    set color black
    set xcor 0
    set ycor 0
    set heading random-float 360
    pendown
    ]
  ]
end

Надеюсь, это поможет, Чарльз

...