class SpriteManager(object): """ A basic manager for adding sprites to the game.""" def __init__(self, sheet_json_file): self.sheet = SpriteSheet(sheet_json_file) self.groups = {} for g in ['background', 'friendly', 'enemy', 'particle', 'ui']: self.groups[g] = pygame.sprite.RenderUpdates() self.screen = pygame.display.get_surface() def add_star(self): star_speed = uniform(0.1, 0.5) star_x_location = randint(0,self.screen.get_width()) star_surface = self.sheet.new_surface('star_y_1') new_star = StarSprite(star_surface, star_x_location, star_speed) self.groups['background'].add(new_star) return new_star def add_ship(self): ship_surface = self.sheet.new_surface('ship') new_ship = ShipSprite(ship_surface, self.screen.get_width()/2, self.screen.get_height()-40) self.groups['friendly'].add(new_ship) return new_ship def add_bullet(self, bullet_x, bullet_y): bullet_surface = self.sheet.new_surface('bullet') new_bullet = BulletSprite(bullet_surface, bullet_x, bullet_y, -0.8) self.groups['friendly'].add(new_bullet) return new_bullet def add_random_enemy(self): enemy_speed = uniform(0.2, 0.5) enemy_x_location = randint(0, self.screen.get_width()) if randint(1,2) == 1: enemy_surface = self.sheet.new_surface('enemy_1') new_enemy = EnemySprite(enemy_surface, enemy_x_location, enemy_speed) else: enemy_surface = self.sheet.new_surface('enemy_2') new_enemy = PingPongEnemySprite(enemy_surface, enemy_x_location, enemy_speed, self.screen.get_width()) self.groups['enemy'].add(new_enemy) return new_enemy def add_explosion(self, start_x, start_y): explode_image = 'explode_{}'.format(randint(1,2)) explode_surface = self.sheet.new_surface(explode_image) new_explode = ExplodeSprite(explode_surface, start_x, start_y) self.groups['particle'].add(new_explode) return new_explode
from random import randint import pygame from pygame.locals import * from spritesheet import SpriteSheet pygame.init() screen = pygame.display.set_mode((500, 600)) sprite_sheet = SpriteSheet('assets/shooter_sheet.sheet') star_surface = sprite_sheet.new_surface('star_y_1') ship_surface = sprite_sheet.new_surface('ship') bullet_surface = sprite_sheet.new_surface('bullet') enemy_surface = sprite_sheet.new_surface('enemy_1') class Star(pygame.sprite.Sprite): def __init__(self, surface, speed, start_x): pygame.sprite.Sprite.__init__(self) self.image = surface self.rect = self.image.get_rect() self.last_time = pygame.time.get_ticks() self.y = 0 self.rect.x = start_x self.speed = speed def update(self): if self.rect.y >= 600:
from random import randint import pygame from pygame.locals import * from spritesheet import SpriteSheet pygame.init() screen = pygame.display.set_mode((500, 600)) sprite_sheet = SpriteSheet('assets/shooter_sheet.sheet') star_surface = sprite_sheet.new_surface('star_y_1') class Star(pygame.sprite.Sprite): def __init__(self, surface, speed, start_x): pygame.sprite.Sprite.__init__(self) self.image = surface self.rect = self.image.get_rect() self.last_time = pygame.time.get_ticks() self.y = 0 self.rect.x = start_x self.speed = speed def update(self): if self.rect.y >= 600: self.kill() return current_time = pygame.time.get_ticks()