Ludii Forum
Cycling through opponent's groups - Printable Version

+- Ludii Forum (
+-- Forum: Suggestions (
+--- Forum: Ludii Features / Services (
+--- Thread: Cycling through opponent's groups (/showthread.php?tid=674)

Cycling through opponent's groups - dale walton - 08-15-2021

I have a new game in which a player places a piece next to each of his opponent's groups

It would be natural to do a
(forEach Group ...
 (move Add (to (sites Around (sites)))

but I don't see a parameter for specifying the owner of the iterated groups.  How can this be done in the  if:() clause of forEach Group?  - or is a language extension required?

RE: Cycling through opponent's groups - Michael - 08-15-2021

Isn't that just if:(= (next) (who at:(to)))?

RE: Cycling through opponent's groups - dale walton - 08-15-2021

(forEach Group if:(= (next) (who at:(to)))
(move Add (to (sites Around (sites)))

Re : your question. I don't know the answer, that is why I am asking.
I don't see the answer in the documentation which doesn't say what a group is or how it is selected. (is a group simply a region defined by the boolean? If so,there must be a default if not if clause is specified which is not given in the documentation, but can be overridden...  can the groups in forEach Group have overlapping elements?)
I had assumed that groups were based on mover's pieces.

My guess was if it was more general, it would need something like
if:(all (sites) if:(is Next (who at:(site)))) 

I will give yours a try first. BTW why is the iterator "to"? Where is this use of "to" documented? Should my above attempt be if:(all (sites) if:(is Next (who at:(to))))  ?

Sorry for so many questions...
OK I see a similar thread called "forEach Group if:"

and am studying it.
Note my purpose is to achieve a turn with many placements, so the above was to simple an approach...

RE: Cycling through opponent's groups - Eric Piette - 08-18-2021


As a quick answer, yes you have to use the boolean condition to iterate through each group.
That's going to iterate all the groups checking that condition.