本文章通过精灵的方式,将一个角色创建出多个,或者说克隆出多个
素材的位置自己替换
import pygame
import random
pygame.init()
# 自定义事件
MOVEEVENT = pygame.USEREVENT
# 第一个参数为事件,第二个参数为时间
pygame.time.set_timer(MOVEEVENT,1000)
clo = pygame.time.Clock()
screen = pygame.display.set_mode((300,300))
class Enemy(pygame.sprite.Sprite):
def __init__(self):
# 使用精灵时必须初始化
pygame.sprite.Sprite.__init__(self)
# 导入素材
self.image = pygame.image.load('image/enemy.png')
# 获取素材的rect
self.rect = self.image.get_rect()
# 初始化飞机的速度
self.speed = random.randint(1, 3)
# 3,指定敌机的初始随机位置
self.rect.bottom = 0
self.rect.x = random.randint(0, 300)
def update(self):
# 1,往下飞
self.rect.y += self.speed
# 2,判断是否移出了屏幕,如果移出删除当前对象
if self.rect.y >= 300:
self.kill()
# 测试当前对象是否删除
print(222222222)
# 创建精灵
enemy_group = pygame.sprite.Group()
def create_sprites():
# 引用
global enemy_group
# 创建敌机的精灵组
for event in pygame.event.get():
# 判断退出
if event.type == pygame.QUIT:
exit()
# 事件监测
if event.type == MOVEEVENT:
# 创建对象
enemy = Enemy()
# 2,将敌机精灵添加到敌机精灵组
enemy_group.add(enemy)
def update_sprites():
# 代用更新和绘制方法,精灵族中的精灵会一起调用
enemy_group.update()
enemy_group.draw(screen)
while True:
# 填充屏幕,用来做刷新
screen.fill((255, 255, 255))
create_sprites()
update_sprites()
pygame.display.update()
# 设置帧率
clo.tick(60)
|