bmarcek
bmarcek

Reputation: 53

select all patches at distance x from turtle

I want to select all the patches at a randomly-generated distance eps from all turtles in a simulation and reset their color to yellow. This essentially draws a circle of patches around each turtle in the simulation. I have tried a few different options without success. Through perusing this forum I found some code that looks promising but still has some issues (posted here). I appreciate any suggestions for tweaking this code or using something else to solve this problem.

let eps2 eps
foreach [ eps2 ]
  [
      ask patches with 
  [
        distance myself > eps2 - 0.5 and
        distance myself < eps2 + 0.5
  ]
  [
    set pcolor yellow
  ]
]

eps is a turtle variable so using the let command allows me to circumvent using a turtle variable in patch context.

The foreach command does not recognize eps because it is not a constant, is there another command I could use here?

Upvotes: 1

Views: 205

Answers (1)

Alan
Alan

Reputation: 9610

You can use list (see below), but ... why do you want a list? As it stands, there is no need to use a list.

to setup
  ca
  crt 1
  ask turtle 0 [test]
end
to test
let eps2 10
foreach (list eps2 )  ;you can use `list`
  [
      ask patches with 
  [
        distance myself > eps2 - 0.5 and
        distance myself < eps2 + 0.5
  ]
  [
    set pcolor yellow
  ]
]
end

Addendum:

Since you indicate that you do not in fact need that list, you might try something along the lines of the following:

to test2
  ca
  crt 1
  ask encirclingPatches turtle 0 10 1 [set pcolor yellow]
end

to-report encirclingPatches [#t #dist #width]
  let _w2 (#width / 2)
  report patches with [
    distance #t > #dist - _w2
    and
    distance #t < #dist + _w2
  ]
end

Upvotes: 1

Related Questions