turtles-own [speed SpeedLimit]
breeds [lefts rights swans polices]
patches-own [flock radar picture]
to setup-cars
if breed = rights [
setxy (random (screen-width))
-1
seth 90
setspeed ((random 10) / 10)
+ 0.1
setSpeedLimit 1]
if breed = lefts [
setxy random (screen-width)
3
seth 270
setspeed ((random 10) / 10)
+ 0.1
setSpeedLimit 1]
end
to swim
if breed = swans
[ifelse xcor < -18
[seth 85 + random 10]
[ifelse xcor < 5
[seth 58 + random
10]
[seth 115 + random
10]]
jump (random 500)
/ 10000]
end
to drive
if breed = rights
[ifelse (count-turtles-at 1 0) > 0
[setspeed speed-of one-of-turtles-at
1 0
decelerate]
[ifelse lookahead = 2
[ifelse (count-turtles-at
1 0) > 0
[setspeed
speed-of one-of-turtles-at 2 0
decelerate]
[accelerate]]
[accelerate]]
if speed < 0.01 [setspeed 0.01]
if speed > SpeedLimit [setspeed SpeedLimit]
if radar = true [setspeed .10]
jump speed]
if breed = lefts
[ifelse (count-turtles-at (-1) 0) > 0
[setspeed speed-of one-of-turtles-at
(-1) 0
decelerate]
[ifelse lookahead = 2
[ifelse (count-turtles-at (-2)
0) > 0
[setspeed
speed-of one-of-turtles-at (-2) 0
decelerate]
[accelerate]]
[accelerate]]
if speed < 0.01 [setspeed 0.01]
if speed > SpeedLimit [setspeed SpeedLimit]
if radar = true [setspeed .10]
jump speed]
end
to accelerate
setspeed (speed + (speedup / 10000))
end
to decelerate
setspeed speed - (slowdown / 1000)
end
|
to setup
ask-turtles [die]
create-rights number
create-lefts int (number / 2)
ask-turtles [setup-cars]
swan-flock
ask-patches [if pc = (red - 2)
[setpc picture] setpicture pc setradar false]
end
to setup-police
create-polices 1
ask-polices [setxy 12 1.5 setc blue]
ask-patches
[setradar false
if (distance 12 1) < 3.5
[setradar
true] ]
end
to remove-police
ask-polices [die]
ask-patches [if radar = true [setpc picture]
setradar false]
end
to see-radar
ask-patches [if radar = true [setpc (red - 2)]]
end
to swan-flock
ask-patches [setflock ((distance -22.5 -21.5) < 2)
if flock = true
[ sprout [ ] ] ]
ask-turtles [if ycor < -10 [setbreed swans setc white]]
ask-swans [setspeed .01
seth 350 + random 10]
end
to go
drivebutton
swimbutton
end
to stop-it
stopdrivebutton
stopswimbutton
end
|