Crofty
Crofty

Reputation: 59

NetLogo check if turtles are on same coordinates

I have two turtle breeds who populate each sides of the window and then only move round in there own side.

The problem I am having is that I want to constantly check to see if one singular instance of a turtle from each breed are both on the same y coordinate. And if this returns true i want both of those turtles to stop, but for all other turtles from each breed to carry on moving. I know you can identify a turtle by there unique ID but i don't know how to use this and how to use the correct syntax.

The best way to describe this in pseudo code would be

ask turtles [
    if breed1 turtle ycor = breed2 turtle ycor
        [ stop breed1 turtle and breed2 turtle ] ]

UPDATE Tried getting the code to work but still nothing happening. Not sure if it is the way the procedure is wrote or the number I have chosen for the threshold.

to move-turtles
 ask turtles [
if not any? turtles with [ breed != [ breed ] of myself and abs (ycor - [ycor] of myself) < 1 ]
[
ask redteam with [pcolor = green - 3] [
right random 360
forward 1
]
ask redteam with [pcolor != green - 3] [ 
back 1
]
ask blueteam with [pcolor = green - 2] [
right random 360
forward 1
]
ask blueteam with [pcolor != green - 2] [ 
back 1
]]
]
end

Upvotes: 2

Views: 2633

Answers (1)

Bryan Head
Bryan Head

Reputation: 12580

Note that "same coordinate" is actually somewhat ambiguous. If one turtles ycor is 5.0000001 and another's is 5.0000000, are they at the same coordinate? Because of this, you should check to see if their coordinates are within a certain amount of each other.

Also, the best way to stop moving is to simply not move. So, here is a possible go procedure that would do what you want:

to go
  ask turtles [
    if not any? turtles with [ breed != [ breed ] of myself and abs (ycor - [ ycor ] of myself) < threshold ] [
      move ;; replace with your move procedure or code
    ]
  ]
end

Here, each turtle checks to see if there are any turtles of a different breed who's ycor is within threshold of their own ycor. If there are not, then it moves. Otherwise, it does nothing.

The myself stuff is the most confusing part here, so I recommend reading the docs.

Upvotes: 2

Related Questions