[Tutor] Iterating backwards

Kent Johnson kent37 at tds.net
Fri Jan 11 18:22:07 CET 2008


James Newton wrote:

> I have created a series of pygame sprites.  Visually, these sprites
> represent counters and may overlap.  I want to determine which sprite
> the user clicked on.
> 
> This seems to me to be a fairly standard feature of a game interface, so
> I imagine that there is already a standard technique for achieving it. 

I would think so too, but a quick look at the docs and tutorials didn't 
turn up anything....

> I'd like to start at the top-most sprite and work backwards
> through the sprites in the group, and then use "break" to stop as soon
> as I find a sprite whose rect collides with the mouse position.
> 
> In my code below, I've tried replacing the line...
> 
>     for vCounter in counters: # the pygame.sprite.RenderPlain() group
> 
> ... with:
> 
>     vRange = range(len(counters))
>     vRange.reverse()
>     for ii in vRange:
>         vCounter = counters[ii]
> 
> However this results in an error:
> 
>     #TypeError: 'Group' object is unindexable

I guess counters is iterable but not a sequence. Try this:
   for vCounter in reversed(list(counters)):

Kent


More information about the Tutor mailing list