Esempio n. 1
0
    def __init__(self, screen, name, center, settings):
        super(Ghost, self).__init__()
        self.screen = screen
        self.sheet = Sheet()
        self.name = name
        self.center = center
        self.settings = settings

        if self.name == 'Blinky':
            self.image = self.sheet.image(562, 0, 38, 38)

        if self.name == 'Inky':
            self.image = self.sheet.image(524, 0, 38, 38)

        if self.name == 'Pinky':
            self.image = self.sheet.image(486, 0, 38, 38)

        if self.name == 'Clyde':
            self.image = self.sheet.image(448, 0, 38, 38)

        self.image = pygame.transform.scale(
            self.image, (settings.block_width, settings.block_height))
        self.rect = self.image.get_rect()
        self.rect.center = center
        self.frame = 0
        self.ticks = 0
Esempio n. 2
0
def build_sprite_sheets(args, sprites):

    sheets = []

    layout = get_layout(args.layout)

    oldlen = 0

    with Timer('generate sheet layouts'):
        while sprites and len(sprites) != oldlen:
            oldlen = len(sprites)

            sheet = Sheet(min_size=args.min_size,
                          max_size=args.max_size,
                          rotate=args.rotate,
                          npot=args.npot,
                          square=args.square,
                          layout=layout)

            sprites = sheet.add(sprites)

            if sheet.sprites:
                sheets.append(sheet)

    if sprites:
        log.warn("Could not place:")
        for spr in sprites:
            log.warn("\t%s", spr.name)

    return sheets
Esempio n. 3
0
def build_sprite_sheets(args, sprites):

    sheets = []

    layout = get_layout(args.layout)

    oldlen = 0

    with Timer('generate sheet layouts'):
        while sprites and len(sprites) != oldlen:
            oldlen = len(sprites)

            sheet = Sheet(
                min_size = args.min_size,
                max_size = args.max_size,
                rotate = args.rotate,
                npot = args.npot,
                square = args.square,
                layout = layout
            )

            sprites = sheet.add(sprites)

            if sheet.sprites:
                sheets.append(sheet)

    if sprites:
        log.warn("Could not place:")
        for spr in sprites:
            log.warn("\t%s", spr.name)

    return sheets
Esempio n. 4
0
 def __init__(self, settings, screen):
     super(Pacman, self).__init__()
     self.dots_eaten = 0
     self.settings = settings
     self.screen = screen
     self.sheet = Sheet()
     self.image = self.sheet.image(376, 0, 38, 38)
     self.image = pygame.transform.scale(
         self.image, (settings.block_width, settings.block_height))
     self.rect = self.image.get_rect()
     self.rect.x = 0
     self.rect.y = 0
     self.ticks = 0
     self.MOVINGUP = self.MOVINGDOWN = self.MOVINGLEFT = self.MOVINGRIGHT = False
     self.frame = 0
     self.move_tick = 0
     self.last_x = 0
     self.last_y = 0
     self.intent = 'none'
     self.angle = 0
Esempio n. 5
0
def load_and_process_sprites(args):

    sprites = load_sprites(args.sprites)

    if not sprites:
        raise ValueError('No sprites found.')

    if args.mask:
        ## Mask sprites against background color
        sprites = mask_sprites(sprites, args.mask)

    if args.trim:
        ## Trim sprites to visible area
        sprites = trim_sprites(sprites)
    else:
        ## Generate hashes of trimmed sprites
        sprites = hash_sprites(sprites)

    if args.alias is not None:
        ## Find and remove duplicate sprites
        sprites, aliased = alias_sprites(sprites, args.alias)

        if aliased:
            sheet = Sheet(npot=True, layout=get_layout('stack'))
            sheet.add(aliased)
            texture = sheet.prepare(args.debug)
            texname = '%salias.png' % args.prefix
            texture.save(texname)

    if args.extrude:
        ## Extrude sprite edges to avoid color bleed
        sprites = extrude_sprites(sprites, args.extrude)

    if args.pad:
        ## Insert transparent padding between sprites
        sprites = pad_sprites(sprites, args.pad)

    if args.sort:
        sprites = sort_sprites(sprites, args.sort, args.rotate)

    return sprites
Esempio n. 6
0
def load_and_process_sprites(args):

    sprites = load_sprites(args.sprites)

    if not sprites:
        raise ValueError('No sprites found.')

    if args.mask:
        ## Mask sprites against background color
        sprites = mask_sprites(sprites, args.mask)

    if args.trim:
        ## Trim sprites to visible area
        sprites = trim_sprites(sprites)
    else:
        ## Generate hashes of trimmed sprites
        sprites = hash_sprites(sprites)

    if args.alias is not None:
        ## Find and remove duplicate sprites
        sprites, aliased = alias_sprites(sprites, args.alias)

        if aliased:
            sheet = Sheet(npot=True, layout=get_layout('stack'))
            sheet.add(aliased)
            texture = sheet.prepare(args.debug)
            texname = '%salias.png' % args.prefix
            texture.save(texname)

    if args.extrude:
        ## Extrude sprite edges to avoid color bleed
        sprites = extrude_sprites(sprites, args.extrude)

    if args.pad:
        ## Insert transparent padding between sprites
        sprites = pad_sprites(sprites, args.pad)

    if args.sort:
        sprites = sort_sprites(sprites, args.sort, args.rotate)

    return sprites
Esempio n. 7
0
class Pacman(Sprite):
    def __init__(self, settings, screen):
        super(Pacman, self).__init__()
        self.dots_eaten = 0
        self.settings = settings
        self.screen = screen
        self.sheet = Sheet()
        self.image = self.sheet.image(376, 0, 38, 38)
        self.image = pygame.transform.scale(
            self.image, (settings.block_width, settings.block_height))
        self.rect = self.image.get_rect()
        self.rect.x = 0
        self.rect.y = 0
        self.ticks = 0
        self.MOVINGUP = self.MOVINGDOWN = self.MOVINGLEFT = self.MOVINGRIGHT = False
        self.frame = 0
        self.move_tick = 0
        self.last_x = 0
        self.last_y = 0
        self.intent = 'none'
        self.angle = 0

    def update(self):

        self.last_x = self.rect.x
        self.last_y = self.rect.y

        current = pygame.time.get_ticks()
        if current - self.move_tick > 8:
            self.move_tick = current
            if self.MOVINGLEFT:
                self.rect.x -= 1
            elif self.MOVINGRIGHT:
                self.rect.x += 1
            elif self.MOVINGUP:
                self.rect.y -= 1
            elif self.MOVINGDOWN:
                self.rect.y += 1

        if self.rect.center == (-15, 290):
            self.rect.center = (579, 290)
        if self.rect.center == (580, 290):
            self.rect.center = (-14, 290)

    def blitme(self):
        current = pygame.time.get_ticks()
        if current - self.ticks > 80:
            self.ticks = current
            self.animate()
        self.screen.blit(self.image, self.rect)

    def animate(self):
        if self.MOVINGRIGHT:
            if self.frame == 0:
                self.image = self.sheet.image(376, 0, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 1
                return
            if self.frame == 1:
                self.image = self.sheet.image(376, 38, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 2
                return
            if self.frame == 2:
                self.image = self.sheet.image(376, 76, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 0
                return

        if self.MOVINGLEFT:
            if self.frame == 0:
                self.image = self.sheet.image(338, 0, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 1
                return
            if self.frame == 1:
                self.image = self.sheet.image(338, 38, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 2
                return
            if self.frame == 2:
                self.image = self.sheet.image(338, 76, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 0
                return

        if self.MOVINGUP:
            if self.frame == 0:
                self.image = self.sheet.image(338, 114, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 1
                return
            if self.frame == 1:
                self.image = self.sheet.image(338, 152, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 2
                return
            if self.frame == 2:
                self.image = self.sheet.image(338, 190, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 0
                return

        if self.MOVINGDOWN:
            if self.frame == 0:
                self.image = self.sheet.image(376, 114, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 1
                return
            if self.frame == 1:
                self.image = self.sheet.image(376, 152, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 2
                return
            if self.frame == 2:
                self.image = self.sheet.image(376, 190, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 0
                return
Esempio n. 8
0
class Ghost(Sprite):
    def __init__(self, screen, name, center, settings):
        super(Ghost, self).__init__()
        self.screen = screen
        self.sheet = Sheet()
        self.name = name
        self.center = center
        self.settings = settings

        if self.name == 'Blinky':
            self.image = self.sheet.image(562, 0, 38, 38)

        if self.name == 'Inky':
            self.image = self.sheet.image(524, 0, 38, 38)

        if self.name == 'Pinky':
            self.image = self.sheet.image(486, 0, 38, 38)

        if self.name == 'Clyde':
            self.image = self.sheet.image(448, 0, 38, 38)

        self.image = pygame.transform.scale(
            self.image, (settings.block_width, settings.block_height))
        self.rect = self.image.get_rect()
        self.rect.center = center
        self.frame = 0
        self.ticks = 0

    def blitme(self):
        current = pygame.time.get_ticks()
        if current - self.ticks > 150:
            self.ticks = current
            self.animate()
        self.screen.blit(self.image, self.rect)

    def animate(self):
        if self.name == 'Blinky':
            if self.frame == 0:
                self.image = self.sheet.image(562, 0, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 1
                return
            if self.frame == 1:
                self.image = self.sheet.image(562, 38, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 0
                return
        elif self.name == 'Inky':
            if self.frame == 0:
                self.image = self.sheet.image(524, 0, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 1
                return
            if self.frame == 1:
                self.image = self.sheet.image(524, 38, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 0
                return
        elif self.name == 'Pinky':
            if self.frame == 0:
                self.image = self.sheet.image(486, 0, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 1
                return
            if self.frame == 1:
                self.image = self.sheet.image(486, 38, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 0
                return
        elif self.name == 'Clyde':
            if self.frame == 0:
                self.image = self.sheet.image(448, 0, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 1
                return
            if self.frame == 1:
                self.image = self.sheet.image(448, 38, 38, 38)
                self.image = pygame.transform.scale(
                    self.image,
                    (self.settings.block_width, self.settings.block_height))
                self.frame = 0
                return