2015-02-25 2 views
0

Здравствуйте у меня есть следующий код:Запуск нескольких процедур одновременно в NetLogo

 to go 
      move 
      play-papelvstije 
      play-papelvsrock 
      play-tijevsrock 
      play-tijevspapel 
      play-rockvspapel 
      play-rockvstije 
     end 


     to play-rockvspapel 
      ask turtles with [color = red] 
       [ 
       let nearby other turtles in-radius 1 
       if any? nearby with [color = green] 
       [ 
       set color green 
       ] 
       ] 
     end 

     to play-papelvstije 
      ask turtles with [color = green] 
      [ 
      let nearby other turtles in-radius 1 
      if any? nearby with [color = blue] 
      [ 
      set color blue 
      ] 
      ] 
     end 

     to play-tijevsrock 
      ask turtles with [color = blue] 
      [ 
      let nearby other turtles in-radius 1 
      if any? nearby with [color = red] 
      [ 
      set color red 
      ] 
      ] 
     end 

     to play-rockvstije 
      ask turtles with [color = red] 
      [ 
      let nearby other turtles in-radius 1 
      if any? nearby with [color = blue] 
      [ 
      set color red 
      ] 
      ] 
      end 

     to play-papelvsrock 
      ask turtles with [color = green] 
      [ 
      let nearby other turtles in-radius 1 
      if any? nearby with [color = red] 
      [ 
      set color green 
      ] 
      ] 
     end 

     to play-tijevspapel 
      ask turtles with [color = blue] 
      [ 
      let nearby other turtles in-radius 1 
      if any? nearby with [color = green] 
      [ 
      set color blue 
      ] 
      ] 
     end 

Так как вы можете видеть, я запустить эту процедуры плей-papelvstije плей-papelvsrock плей-tijevsrock, плей-tijevspapel, play-rockvspapel, play-rockvstije в этом точно порядке, поэтому, когда я запускаю симуляцию, я получаю уклон в моих результатах, потому что первая команда для запуска - это та, у которой есть увеличение численности в конце, поэтому я хочу сделать это найти способ запуска этих процедур, но с одной только командой. Я пробовал команды «foreach» и «map», однако я не получил результатов. Anny предложения?

ответ

1

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

to setup 
    clear-all 
    create-turtles 100 [ 
    set color red 
    setxy random-pxcor random-pycor 
    ] 
    ask n-of 10 turtles [ 
    set color green 
    ] 
    ask n-of 10 turtles with [color = red][ 
    set color blue 
    ] 


    reset-ticks 
end 

to go 
    move 
    changeColor 
    tick 
end 

to move 
    ask turtles [ 
    rt random-float 90 
    lt random-float 90 
    fd 1 
    ] 
end 

to changeColor 
    ask turtles [ 
    let mycolor color 
    let nearby other turtles in-radius 1 
    if mycolor = blue [ 
     if any? nearby with [color = green] 
     [ 
      set color blue 
     ] 
     if any? nearby with [color = red] 
     [ 
      set color red 
     ] 
    ] 
    if mycolor = green [ 
     if any? nearby with [color = red] 
     [ 
      set color green 
     ] 
     if any? nearby with [color = blue] 
     [ 
      set color blue 
     ] 
    ] 
    if mycolor = red [ 
     if any? nearby with [color = red][ 
     if any? nearby with [color = blue] 
     [ 
      set color red 
     ] 
     if any? nearby with [color = green] 
     [ 
      set color green 
     ] 
     ] 
    ] 
    ] 
end 
Смежные вопросы