Search code examples
pythonlistpygamerect

rect collision with list of rects


I have the code player_rect.colliderect(tile_rects): where player_rect is a single Rect, and tile_rects is a list of Rects.
I get the error `builtins.TypeError:

Argument must be rect style object

when I try to run my code (presumably as the code doesn't like having a list of rects over a single rect).

I also just found out than when I switch the positions of tile_rects and player_rectI instead get the error

builtins.AttributeError: 'list' object has no attribute 'colliderect'

My question is, how can I change my code so that I can check for collisions with a rect and a list of rects?


Solution

  • Use pygame.Rect.collidelist to test whether a rectangle collides with one of a list of rectangles.

    collidelist:

    Test whether the rectangle collides with any in a sequence of rectangles. The index of the first collision found is returned. If no collisions are found an index of -1 is returned.

    if player_rect.collidelist(tile_rects) >= 0:
        # [...]