✕
精灵也就是我们的类操作,定义一个类型的对象,而且pygame封装好了一些对应的操作,方便我们的调用。
pygame中pygame.sprite.Sprite封装了精灵的操作,我们可以直接继承这个类,来方便的构建我们的精灵!
精灵的使用分为以下步骤:
还有个继承的方法,
self.kill() # 杀死精灵!!
完成以上步骤,我们就可以使用精灵组了。
下面代码使用精灵来创建多个反弹球,并且设置精灵的死亡操作!
注意自己要准备个图片!!!
import random
import pygame
W = 600
H = 600
class Jl(pygame.sprite.Sprite):
""" 精灵类"""
def __init__(self):
# 初始化继承类方法
super().__init__()
# 宽
self.w = 50
# 高
self.h = 50
# 速度
self.xs = 1
self.ys = 1
# 反弹到一定次数死亡
self.cont = random.randint(10,20)
# 随机的位置
x = random.randint(0,W-self.w)
y = random.randint(0,H-self.h)
print(x,y)
self.fk = pygame.Rect(x,y,self.w, self.h)
def update(self,screen, *args):
""" 精灵更新"""
# print("精灵更新")
# print(self.cont)
if self.cont == 0:
self.kill() # 杀死精灵
self.fk.x += self.xs
self.fk.y += self.ys
if self.fk.x > W - self.w or self.fk.x < 0 :
self.xs = -self.xs
self.cont -= 1
elif self.fk.y > H - self.h or self.fk.y < 0:
self.ys = -self.ys
self.cont -= 1
# 绘制精灵
pygame.draw.rect(screen, (255, 0, 0), [self.fk.x,self.fk.y,self.fk.w, self.fk.h])
def __del__(self):
""" 删除"""
print("删除精灵")
def main():
# 初始化pygame模块
pygame.init()
# 初始化字体
pygame.font.init()
zt = pygame.font.SysFont('幼圆',60)
over = zt.render("游戏结束啦!",True,(255,0,0))
# 设置窗口大小
screen = pygame.display.set_mode((W,H))
# 设置窗口标题
pygame.display.set_caption('窗口标题')
# 创建精灵组
jlz = pygame.sprite.Group()
jj = Jl()
jlz2 = pygame.sprite.Group(jj)
# 创建精灵
jl = list()
for i in range(5):
jl.append(Jl())
jlz.add(jl[i])
while True:
# 重绘屏幕
screen.fill((0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit(0)
if len(jlz) == 0 and len(jlz2) == 0:
# 加载游戏结束图片
img = pygame.image.load('0.jpg')
screen.blit(img,[100,100])
# 游戏结束文字
screen.blit(over, [100, 100])
else:
# 调用精灵
# 更新方法
jlz.update(screen)
jlz2.update(screen)
# 绘制方法
# jlz.draw(screen)
# 点击关闭按钮
# 刷新显示
pygame.display.update()
if __name__ == '__main__':
main()