[Python] 纯文本查看 复制代码
没发过代码试试
import pygame
from random import *
class SmallEnemy(pygame.sprite.Sprite):
def __init__(self,size):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("images\enemy1.png").convert_alpha()
self.rect = self.image.get_rect()
self.size = size
self.speed = 2
self.rect.top, self.rect.left = randint(-30 * self.rect.height, 0), \
randint(0,self.size[0]-self.rect.width)
self.active = True
self.mask = pygame.mask.from_surface(self.image)
self.destroy_image = []
self.destroy_image.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()])
def move(self):
if self.rect.top < self.size[1] -110 :
self.rect.top += self.speed
else:
self.reset()
def reset(self):
self.active = True
self.rect.top, self.rect.left = randint(-25 * self.rect.height, 0), \
randint(0,self.size[0]-self.rect.width)
class MidEnemy(pygame.sprite.Sprite):
energy = 10
def __init__(self,size):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("images\enemy2.png")
self.image_hit = pygame.image.load("images\enemy2_hit.png").convert_alpha()
self.rect = self.image.get_rect()
self.size = size
self.speed = 1
self.rect.top, self.rect.left = randint(-35 * self.rect.height, -5 * self.rect.height), \
randint(0, self.size[0]-self.rect.width)
self.active = True
self.mask = pygame.mask.from_surface(self.image)
self.destroy_image = []
self.destroy_image.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.energy = MidEnemy.energy
self.hit = False
def move(self):
if self.rect.top < self.size[1] -110:
self.rect.top += self.speed
else:
self.reset()
def reset(self):
self.energy = MidEnemy.energy
self.active = True
self.rect.top, self.rect.left = randint(-35 * self.rect.height, -5 * self.rect.height), \
randint(0, self.size[0]-self.rect.width)
class BigEnemy(pygame.sprite.Sprite):
energy = 50
def __init__(self,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.rect = self.image1.get_rect()
self.size = size
self.speed = 1
self.rect.top, self.rect.left = randint(-40 * self.rect.height, -5 * self.rect.height), \
randint(0, self.size[0]-self.rect.width)
self.active = True
self.mask = pygame.mask.from_surface(self.image1)
self.destroy_image = []
self.destroy_image.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.energy = BigEnemy.energy
self.hit = False
def move(self):
if self.rect.top < self.size[1] -110:
self.rect.top += self.speed
else:
self.reset()
def reset(self):
self.energy = BigEnemy.energy
self.active = True
self.rect.top, self.rect.left = randint(-40 * self.rect.height, -5 * self.rect.height), \
randint(0, self.size[0]-self.rect.width)
class Boss(pygame.sprite.Sprite):
energy = 200
def __init__(self,size):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("boss\lv1.png").convert_alpha()
self.image_hit = pygame.image.load("boss\lv1_hit.png").convert_alpha()
self.size = size
self.rect = self.image.get_rect()
self.rect.top, self.rect.left = (-1 *self.rect.height), (self.size[0] - self.rect.width)//2
self.active = False
self.hit = False
self.speed = 1
self.speed_level = 0
self.mask = pygame.mask.from_surface(self.image)
self.energy = Boss.energy
self.game_lv = 1
def move(self):
#由上方生成 移动到屏幕正上
if self.rect.top < 0:
self.rect.top += self.speed
else:
self.speed = 0
self.rect.left += self.speed_level
if self.rect.right >= self.size[0]:
self.rect.right = self.size[0]
self.speed_level = -self.speed_level
if self.rect.left <= 0:
self.rect.left = 0
self.speed_level = -self.speed_level
def reset(self):
self.rect.top, self.rect.left = (-1 *self.rect.height), (self.size[0] - self.rect.width)//2
self.speed = 1
self.speed_level += 0
Boss.energy = 2.5 * Boss.energy
self.energy = Boss.energy
self.active = True
self.image = pygame.image.load("boss\lv%d.png"%(self.game_lv)).convert_alpha()
self.image_hit = pygame.image.load("boss\lv%s_hit.png"%(self.game_lv)).convert_alpha()
self.game_lv += 1
def _return(self):
self.active = False
self.rect.top, self.rect.left = (-1 *self.rect.height), (self.size[0] - self.rect.width)//2