2022-04-18 00:13:14 +08:00

119 lines
4.9 KiB
Python

import pygame,os
from random import *
abspath = os.getcwd() + "/"
class SmallEnemy(pygame.sprite.Sprite):
def __init__(self, bg_size):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(abspath + "images/enemy1.png").convert_alpha()
self.destroy_images = []
self.destroy_images.extend([\
pygame.image.load(abspath + "images/enemy1_down1.png").convert_alpha(), \
pygame.image.load(abspath + "images/enemy1_down2.png").convert_alpha(), \
pygame.image.load(abspath + "images/enemy1_down3.png").convert_alpha(), \
pygame.image.load(abspath + "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(abspath + "images/enemy2.png").convert_alpha()
self.image_hit = pygame.image.load(abspath + "images/enemy2_hit.png").convert_alpha()
self.destroy_images = []
self.destroy_images.extend([\
pygame.image.load(abspath + "images/enemy2_down1.png").convert_alpha(), \
pygame.image.load(abspath + "images/enemy2_down2.png").convert_alpha(), \
pygame.image.load(abspath + "images/enemy2_down3.png").convert_alpha(), \
pygame.image.load(abspath + "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(abspath + "images/enemy3_n1.png").convert_alpha()
self.image2 = pygame.image.load(abspath + "images/enemy3_n2.png").convert_alpha()
self.image_hit = pygame.image.load(abspath + "images/enemy3_hit.png").convert_alpha()
self.destroy_images = []
self.destroy_images.extend([\
pygame.image.load(abspath + "images/enemy3_down1.png").convert_alpha(), \
pygame.image.load(abspath + "images/enemy3_down2.png").convert_alpha(), \
pygame.image.load(abspath + "images/enemy3_down3.png").convert_alpha(), \
pygame.image.load(abspath + "images/enemy3_down4.png").convert_alpha(), \
pygame.image.load(abspath + "images/enemy3_down5.png").convert_alpha(), \
pygame.image.load(abspath + "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)