import pygame from random import * class SmallEnemy(pygame.sprite.Sprite): def __init__(self, bg_size): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("images/enemy1.png").convert_alpha() self.destroy_images = [] self.destroy_images.extend([\ pygame.image.load("images/enemy1_down1.png").convert_alpha(), \ pygame.image.load("images/enemy1_down2.png").convert_alpha(), \ pygame.image.load("images/enemy1_down3.png").convert_alpha(), \ pygame.image.load("images/enemy1_down4.png").convert_alpha() \ ]) self.rect = self.image.get_rect() self.width, self.height = bg_size[0], bg_size[1] self.speed = 2 self.active = True self.rect.left, self.rect.top = \ randint(0, self.width - self.rect.width), \ randint(-5 * self.height, 0) self.mask = pygame.mask.from_surface(self.image) def move(self): if self.rect.top < self.height: self.rect.top += self.speed else: self.reset() def reset(self): self.active = True self.rect.left, self.rect.top = \ randint(0, self.width - self.rect.width), \ randint(-5 * self.height, 0) class MidEnemy(pygame.sprite.Sprite): energy = 8 def __init__(self, bg_size): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("images/enemy2.png").convert_alpha() self.image_hit = pygame.image.load("images/enemy2_hit.png").convert_alpha() self.destroy_images = [] self.destroy_images.extend([\ pygame.image.load("images/enemy2_down1.png").convert_alpha(), \ pygame.image.load("images/enemy2_down2.png").convert_alpha(), \ pygame.image.load("images/enemy2_down3.png").convert_alpha(), \ pygame.image.load("images/enemy2_down4.png").convert_alpha() \ ]) self.rect = self.image.get_rect() self.width, self.height = bg_size[0], bg_size[1] self.speed = 1 self.active = True self.rect.left, self.rect.top = \ randint(0, self.width - self.rect.width), \ randint(-10 * self.height, -self.height) self.mask = pygame.mask.from_surface(self.image) self.energy = MidEnemy.energy self.hit = False def move(self): if self.rect.top < self.height: self.rect.top += self.speed else: self.reset() def reset(self): self.active = True self.energy = MidEnemy.energy self.rect.left, self.rect.top = \ randint(0, self.width - self.rect.width), \ randint(-10 * self.height, -self.height) class BigEnemy(pygame.sprite.Sprite): energy = 20 def __init__(self, bg_size): pygame.sprite.Sprite.__init__(self) self.image1 = pygame.image.load("images/enemy3_n1.png").convert_alpha() self.image2 = pygame.image.load("images/enemy3_n2.png").convert_alpha() self.image_hit = pygame.image.load("images/enemy3_hit.png").convert_alpha() self.destroy_images = [] self.destroy_images.extend([\ pygame.image.load("images/enemy3_down1.png").convert_alpha(), \ pygame.image.load("images/enemy3_down2.png").convert_alpha(), \ pygame.image.load("images/enemy3_down3.png").convert_alpha(), \ pygame.image.load("images/enemy3_down4.png").convert_alpha(), \ pygame.image.load("images/enemy3_down5.png").convert_alpha(), \ pygame.image.load("images/enemy3_down6.png").convert_alpha() \ ]) self.rect = self.image1.get_rect() self.width, self.height = bg_size[0], bg_size[1] self.speed = 1 self.active = True self.rect.left, self.rect.top = \ randint(0, self.width - self.rect.width), \ randint(-15 * self.height, -5 * self.height) self.mask = pygame.mask.from_surface(self.image1) self.energy = BigEnemy.energy self.hit = False def move(self): if self.rect.top < self.height: self.rect.top += self.speed else: self.reset() def reset(self): self.active = True self.energy = BigEnemy.energy self.rect.left, self.rect.top = \ randint(0, self.width - self.rect.width), \ randint(-15 * self.height, -5 * self.height)