ThomasC
ThomasC

Reputation: 881

How to get a patch to count the turtles passing through it

I'd like to have patches count the number of turtles that have stood on them. What would be ideal is a event such as:

if turtle-lands-on-me [add one to count]

because a turtles could leave and come back and be counted twice (which is what I want) and it would avoid counting turtles who stand still twice or more (which I don't want). Is there any way to achieve this?

Thank you!

Upvotes: 1

Views: 423

Answers (1)

JenB
JenB

Reputation: 17678

What you need is a variable for each patch (I am calling it 'landed' below). The following code assumes you want to know about the patch it lands on each time step, but ignores the ones it passes over. It also updates the counts only where the turtle changes the patch, as requested, and labels the patch with the count.

patches-own [landed]

to setup
  create-turtles 20
  [ setxy random-xcor random-ycor
  ]
end

to go
  ask turtles
  [ let old-patch patch-here
    set heading random 360
    forward one-of [0 0.5 1 3]
    if old-patch != patch-here
    [ ask patch-here
      [ set landed landed + 1
      ]
    ]
  ]
  ask patches [set plabel landed]
end

The problem is that a turtle can pass over multiple patches during one time step. You can see this in the example model for those turtles that move 3. If you also want them, you will need to do something like the 'Line of Sight' model in the NetLogo models library.

Upvotes: 3

Related Questions