我正在创建一个环境,要求人们将其移到目标上。我的问题是我无法为特定的协调设定目标:[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