In order to write out the Sprites, you need some way to enumerate
all of them. You'll find an example of that in the
step()
method of class Sprites
.
The method step()
has to deal withg the possibility of
seeing a Sprite more than once because it moves them (by calling
act()
). So it uses a HashSet
to
keep track of Sprites that have moved to avoid moving the same Sprite
twice in a turn.
In your method to save all of the Sprites, you can ignore the risk that they are moving; it is OK if you simply run through all of the grid locations and save all of the agents you find.
Note that this is not a perfect solution, because it is possible
that step()
may run while you are writing out the
Sprites. That is an interesting problem: if it happens, you may fail
to save a Sprite (if it moves from a position you have not yet looked
at to one that you already have) or you might duplicate a Sprite (if
it moves after you save it to a position that you process again).
Solving this well is a bit beyond the scope of this semester's class,
and it isn't the point of this lab. In this case, we'll be accept
the imperfection.