def __init__(self, player): super(PlayerHitAnimation, self).__init__() self.player = player self.sheet = SpriteSheet("assets/images/Sprite_FX_Explosion_0042.png") self.images = self.sheet.images_by(148, 148, (0, 0, 0)) self.current_frame = 0 self.frame_speed = 2 self.animation_counter = 0 self.image = self.images[self.current_frame] self.rect = self.image.get_rect( left = self.player.rect.x, top = self.player.rect.y )
def __init__(self, image_url, image_width, image_height, inset = None): super(Asteroid, self).__init__() self.sheet = SpriteSheet(image_url) self.images = self.sheet.images_by(image_width, image_height, Color("black"), inset) self.current_frame = 0 self.image = self.images[self.current_frame] self.rect = self.image.get_rect( top = randint(-100, 0), left = randint(0, SCREEN_SIZE[0]), width = image_width, height = image_height ) self.frame_speed = 1.5 self.animation_counter = 0
def __init__(self, location, screensize): game.sprite.Sprite.__init__(self) Boss_1.screen_width = screensize[0] Boss_1.screen_height = screensize[1] self.frame = 0 self.frameCalls = 0 if Boss_1.image is None: # make all of the appropriate transformations of the image based # on direction of travel sprites = SP.loadSheet( "images/sprites/boss_1.png", 52, 26, [2, 1]) Boss_1.right = sprites[0] Boss_1.left = SP.rotateSprites(Boss_1.right, 180) Boss_1.up = SP.rotateSprites(Boss_1.right, 90) Boss_1.down = SP.rotateSprites(Boss_1.right, -90) Boss_1.upright = SP.rotateSprites(Boss_1.right, 45) Boss_1.upleft = SP.rotateSprites(Boss_1.right, 135) Boss_1.downright = SP.rotateSprites(Boss_1.right, -45) Boss_1.downleft = SP.rotateSprites(Boss_1.right, -135) self.waiting = False self.direction = "right" self.set_direction(self.direction) self.set_image() #set the speed & get the rectangle self.rect = self.image.get_rect() #make sure it is in the appropriate location self.rect.topleft = location #get the width & height of screen self.width = screensize[0] self.height = screensize[1] self.x = location[0] self.y = location[1] self.current_move = 0 self.old_pos_x = location[0] self.old_pos_y = location[1] #This variable keeps track of the number of cycles #the enemy has waited before restarting #If 0, enemy continues as normal #Enemy will stay stopped until stop_time == max_stop_time self.waited_time = 0 self.moved_time = 0 self.speed = 7 self.active_distance = 15 #Initial strength for car self.strength = 0 #Set as 500 to give him a little more strength self.health = 500 #Original transport variables self.is_transporting = False self.transport_time = 0 self.transport_location = None
class Asteroid(Sprite): def __init__(self, image_url, image_width, image_height, inset = None): super(Asteroid, self).__init__() self.sheet = SpriteSheet(image_url) self.images = self.sheet.images_by(image_width, image_height, Color("black"), inset) self.current_frame = 0 self.image = self.images[self.current_frame] self.rect = self.image.get_rect( top = randint(-100, 0), left = randint(0, SCREEN_SIZE[0]), width = image_width, height = image_height ) self.frame_speed = 1.5 self.animation_counter = 0 def update(self): if self.animation_counter == (self.frame_speed - 1): self.current_frame = ( (self.current_frame + 1) if self.current_frame < len(self.images) else 0 ) self.animation_counter = (self.animation_counter + 1) % self.frame_speed self.image = self.images[self.current_frame - 1] if self.rect.y > SCREEN_SIZE[1]: self.rect.y = 0 self.rect.x = random.randint(0, SCREEN_SIZE[0]) else: self.rect.y += self.speed
def __init__(self, exploded_object): super(AsteroidExplosion, self).__init__() self.exploded_object = exploded_object self.sheet = SpriteSheet("assets/images/Sprite_FX_Explosion_0015.png") self.images = self.sheet.images_at( [ (52, 88, 118, 124), (268, 72, 136, 140), (480, 70, 158, 160), (699, 62, 172, 168), (914, 82, 186, 186), (1140, 46, 200, 190), (1106, 558, 246, 328) ], (0, 128, 0) ) self.current_frame = 0 self.image = self.images[self.current_frame] self.rect = self.image.get_rect(top = exploded_object.y, left = exploded_object.x) self.sound = Sound("assets/sound/Explosion-SoundBible.com-2019248186.wav")
class AsteroidExplosion(Sprite): def __init__(self, exploded_object): super(AsteroidExplosion, self).__init__() self.exploded_object = exploded_object self.sheet = SpriteSheet("assets/images/Sprite_FX_Explosion_0015.png") self.images = self.sheet.images_at( [ (52, 88, 118, 124), (268, 72, 136, 140), (480, 70, 158, 160), (699, 62, 172, 168), (914, 82, 186, 186), (1140, 46, 200, 190), (1106, 558, 246, 328) ], (0, 128, 0) ) self.current_frame = 0 self.image = self.images[self.current_frame] self.rect = self.image.get_rect(top = exploded_object.y, left = exploded_object.x) self.sound = Sound("assets/sound/Explosion-SoundBible.com-2019248186.wav") def update(self): self.current_frame = (self.current_frame + 1) % len(self.images) self.image = self.images[self.current_frame - 1] self.rect = self.image.get_rect( topleft = ( (self.exploded_object.x + self.exploded_object.width / 2) - (self.image.get_width() / 2), (self.exploded_object.y + self.exploded_object.height / 2) - (self.image.get_height() / 2) ) ) if self.current_frame == 0: self.kill()
class PlayerHitAnimation(Sprite): def __init__(self, player): super(PlayerHitAnimation, self).__init__() self.player = player self.sheet = SpriteSheet("assets/images/Sprite_FX_Explosion_0042.png") self.images = self.sheet.images_by(148, 148, (0, 0, 0)) self.current_frame = 0 self.frame_speed = 2 self.animation_counter = 0 self.image = self.images[self.current_frame] self.rect = self.image.get_rect( left = self.player.rect.x, top = self.player.rect.y ) def update(self): if self.animation_counter == (self.frame_speed - 1): self.current_frame = (self.current_frame + 1) % len(self.images) self.animation_counter = (self.animation_counter + 1) % self.frame_speed self.image = self.images[self.current_frame - 1] self.rect = self.image.get_rect( left = self.player.rect.x, top = self.player.rect.y ) if self.current_frame == len(self.images) - 1: self.kill()
def _get_full(self, which): tmp = SS.loadSheet("images/sprites/player_total.png", 52, 26, [8, 3]) tmp = tmp[which] full_speed = [] for i in range(5, len(tmp)): full_speed.append(tmp[i]) return full_speed
def _get_accelerating(self, which): tmp = SS.loadSheet("images/sprites/player_total.png", 52, 26, [8, 3]) tmp = tmp[which] accelerating = [] for i in range(1, 5): accelerating.append(tmp[i]) return accelerating
def set_rotations(self): Player.left = SS.rotateSprites(Player.right, 180) Player.up = SS.rotateSprites(Player.right, 90) Player.down = SS.rotateSprites(Player.right, -90) Player.upright = SS.rotateSprites(Player.right, 45) Player.upleft = SS.rotateSprites(Player.right, 135) Player.downright = SS.rotateSprites(Player.right, -45) Player.downleft = SS.rotateSprites(Player.right, -135) self.set_direction(self.direction) self.frame = 0
def __init__(self, location, screensize, speed, direction, move_array): game.sprite.Sprite.__init__(self) Enemy.screen_width = screensize[0] Enemy.screen_height = screensize[1] self.frame = 0 self.frameCalls = 0 if Enemy.image is None: # make all of the appropriate transformations of the image based # on direction of travel sprites = SP.loadSheet( "images/sprites/enemyfullhealthlights.png", 52, 26, [3, 1]) Enemy.right = sprites[0] Enemy.left = SP.rotateSprites(Enemy.right, 180) Enemy.up = SP.rotateSprites(Enemy.right, 90) Enemy.down = SP.rotateSprites(Enemy.right, -90) Enemy.upright = SP.rotateSprites(Enemy.right, 45) Enemy.upleft = SP.rotateSprites(Enemy.right, 135) Enemy.downright = SP.rotateSprites(Enemy.right, -45) Enemy.downleft = SP.rotateSprites(Enemy.right, -135) self.direction = direction self.set_direction(direction) self.set_image() #set the speed & get the rectangle self.speed = speed self.rect = self.image.get_rect() #make sure it is in the appropriate location self.rect.topleft = location #get the width & height of screen self.width = screensize[0] self.height = screensize[1] self.x = location[0] self.y = location[1] self.movements = move_array self.current_move = 0 self.old_pos_x = location[0] self.old_pos_y = location[1] #This variable keeps track of the number of cycles #the enemy has waited before restarting #If 0, enemy continues as normal #Enemy will stay stopped until stop_time == max_stop_time self.stop_time = 0
def _get_stopped(self, which): tmp = SS.loadSheet("images/sprites/player_total.png", 52, 26, [8, 3]) tmp = tmp[which] return [tmp[0]]