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 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
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
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 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
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
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