Получить цвет глобальных переменных с Netlogo - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь получить реальный цвет моей глобальной переменной.

Вот мой код:

breed [players player]

globals [
INITIAL-POSSESSION ;
]

to setup
  clear-all
  reset-ticks
  set-initial-possession
end

to go 
  ticks
  ask players [
  decision
  ]
end


to-report initial-possession
  report random 2
end

to set-initial-possession
  ifelse initial-possession = 1
  [ 
    set INITIAL-POSSESSION black]
  [ 
    set INITIAL-POSSESSION white]
end


to decision
 if ([color] of INITIAL-POSSESSION) = black
 [] ;;do something
if ([color] of INITIAL-POSSESSION) = white
[];;do something
end

Но я получаю эту ошибку:

Из ожидаемого ввода будет набор операторов черепахи или набора агентов связи, или черепаха, или ссылка, но вместо этого получено число 0.

Поэтому я изменяю его на (и это работает):

to decision
 if INITIAL-POSSESSION = 0
  []
 if INITIAL-POSSESSION = 9.9
  []
end

Но есть ли другой способ сделать это?(Я использую netlogo 6.0)

1 Ответ

0 голосов
/ 19 февраля 2019

Я думаю, что может быть не хватает какого-то кода, поэтому я не могу подтвердить, но похоже, что вы, возможно, не установили BALL-OWNER как черепаху или патч, а вместо этого присвоили значение непосредственно этой переменной.of запрашивает переменную у агента (или список переменных из набора агентов), поэтому, если для BALL-OWNER установлено значение, NetLogo запутывается.Однако если вы назначаете агента для BALL-OWNER, ваш подход должен работать нормально.Например, попробуйте выполнить код ниже:

to setup
  ca
  crt 10 [ 
    setxy random-xcor random-ycor
    set color one-of [ red blue ] 
  ]
  reset-ticks
end

to go
  let ball-owner one-of turtles

  ifelse [color] of ball-owner = red [
    print "red team has possession"
  ] [
    print "blue team has possession"
  ]
end

Редактировать: Вы можете определенно использовать global, чтобы выбрать цвет, как вы делали во втором блоке кода - я простохотел бы отметить, что of специально привязан к agents.Если вы хотите сохранить цвет в переменной global для сравнения, это возможно, просто сравнение проще, чем использование of:

globals [ initial-possession ]

to setup
  ca
  crt 3
  set-initial-possession
  reset-ticks
end

to go 
  ask turtles [
    decision
  ]
end

to set-initial-possession
  set initial-possession ifelse-value ( random 2 = 1 ) [black] [white]
end


to decision
  ifelse initial-possession = black [
    print "I see that black has possession"
  ] [
    print "I see that white has possession"
  ]
end

Я не уверен, поможет ли это,это может зависеть от вашей цели сохранения цвета в global во-первых!

...