from itertools import product from pygame import Surface, Rect, image from engine.entity import Entity from engine.resources import res from engine.servers.graphics import GraphicsServer from engine.components.collide_rect import CollideRect from engine.components.sprite import Sprite from .common import S from .pacdot import PacDot, EnsmallmentDot class Level(Entity): def __init__(self, path): super().__init__('level') self.path = path def load(self): desc = image.load(res(self.path)) w, h = desc.get_size() GraphicsServer().resize((w * S, h * S)) self.surf = Surface((w * S, h * S)).convert() self.surf.fill((0, 0, 0)) wall = Surface((S, S)).convert() wall.fill((0, 0, 255)) for x, y in product(range(w), range(h)): col = desc.get_at((x, y)) if col == (0, 0, 255): self.add(CollideRect(Rect(x * S, y * S, S, S))) self.surf.blit(wall, (x * S, y * S)) elif col == (139, 139, 139): pc = PacDot() pc.x = x * S pc.y = y * S self.scene.add(pc) PacDot.tot += 1 elif col == (193, 193, 193): pc = EnsmallmentDot() pc.x = x * S pc.y = y * S self.scene.add(pc) self.add(Sprite(self.surf, 0))