如何为乌龟创建目标并要求它们选择一只?

时间:2019-09-27 20:27:24

标签: netlogo

我正在创建一个环境,要求人们将其移到目标上。我的问题是我无法为特定的协调设定目标:[3 20和20 -3]。我也希望人们在他们的耐心为零时改变他们的方向,同时不要与其他人在相反的方向上崩溃。我想在滴答数为500时停止我的代码。 这是我的完整代码:

    breed [ people person ]
    breed [trees tree]
    breed [stores store]
    breed [lights light]
   people-own [sex age speed PersonalDistance target max-speed min-speed 
  patience]
  patches-own [meaning]

to setup
  ca
  resize-world -20 20 -20 20
  draw-sidewalk
  createTrees
  CreateStores
  place-people
  set-targets
end


to go
  make-new-person 10 2 -20 0 blue "person"
  make-new-person 10 1 -20 0 yellow "person"
  make-new-person 10 1 20 180 white "person"
  make-new-person 10 2 20 180 pink "person" 
  make-new-person 10 -20 3 90 orange "person"
  move-people
  tick
end

to make-new-person [freq x y head col shp]
  if (random-float 100 < freq) and not any? turtles-on patch x y [
    create-people 1 [
      setxy x y
      set heading head
      set color col
      set shape shp
  ]
end


to place-people
  while [count people < num-of-people] [
    ask one-of patches with [meaning = "sidewalk"] [
      sprout-people 1 
end


to move-people
  ask people [ move-to-target ]
  ask people with [ patience <= 0] [choose-new-direction set speed speed + acceleration  if [pxcor] of patch-here  = item 0 target and [pycor] of patch-here = item 1 target [die]]
  reset-ticks
end

to move-to-target
  ask people [
    set target one-of targets
    facexy item 0 target item 1 target + random-normal 0 10
  ;;face min-one-of patches with [meaning = "destination"] [ distance myself ]
  let slow-people other people in-cone 1 180 
  let slow-person min-one-of slow-people [distance myself]
  if slow-person != nobody [
    set speed [speed] of slow-person
    slow-down-person
]
]
end 

to slow-down-person
  set speed (speed - deceleration)
  if speed < 0 [set speed deceleration]
  set patience patience - 1 
end 

to choose-new-direction
  ask people [
    if not any? turtles-on patch-left-and-ahead 30 1 [
      rt 90 ]
   if not any? turtles-on patch-right-and-ahead 30 1 [
      rt 90 ]
  ]

end 

;;to create-destinations
 ; ask patches with [pycor = 3 and pxcor = 20 ][
   ; sprout 5 [
   ; set shape "flag"
   ; set meaning "destination"
   ; set size 2 
   ;   set color white]


to set-targets

  set targets [ [20 3] [20  -3]]
  set k .2
end

0 个答案:

没有答案
相关问题