import pygame from coords import Coords from common import DrawableGameObject class WallBlock(DrawableGameObject): """объект элемента стены""" def __init__( self, coords: Coords, parent: DrawableGameObject, assets: dict | None = None, ): super().__init__(coords, parent, assets) self._surface = pygame.image.load(self.assets["brick.png"]).convert_alpha() self.rect = self.surface.get_rect() self.rect.topleft = coords # уменьшаем размер монетки sf = Coords(1, 1) self._surface, self.rect = self.scene.scale_box(self.surface, self.rect, sf) self._mask = pygame.mask.Mask(self.rect.size, fill=True) def draw(self): self.parent.surface.blit(self.surface, self.rect) class Walls(DrawableGameObject): """объект стен""" def __init__( self, parent: DrawableGameObject, maze: list[list[int]], box_sz: Coords, assets: dict | None = None, ): super().__init__(Coords.zero(), parent, assets) self.box_sz = box_sz self.blocks = [ WallBlock(Coords(j, i).transform(box_sz), self, self.assets) for i, row in enumerate(maze) for j, item in enumerate(row) if item > 0 ] def draw(self): for block in self.blocks: block.draw() def check_collision(self, rect: pygame.Rect, mask: pygame.Mask) -> bool: for block in self.blocks: if block.overlap(rect, mask): return True return False