精灵与精灵组
在刚刚完成的案例中,图像加载、位置变化、绘制图像都需要程序员编写代码分别处理,为了简化开发步骤,pygame提供了两个类:
- ·pygame.sprite.Sprite`——存储图像数据image和位置rect的对象
-
pygame.sprite.Group
注:sprite是精灵的意思,group是组、群的意思
派生精灵子类
- 新建
plane_sprites.py
文件 - 定义
GameSprite
继承自pygame.sprite.Sprite
注意:
如果一个类的父类不是object
,在重写初始化方法是,一定要先super()
一下父类的__init__
方法,保证父类中实现的__init__
代码能够被正常执行
属性:
-
image
精灵图像,使用image_name
加载 -
rect
精灵大小,默认使用图像大小 -
speed
精灵移动速度,默认为1
方法:
update
每次更新屏幕时在游戏循环内调用,让精灵的self.rect.y += self.speed
提示:image
的get_rect()
方法,可以返回pygame.Rect(0, 0, 图像宽, 图像高)
的对象
使用游戏精灵和精灵组创建敌机
需求:使用刚刚派生的游戏精灵和精灵组创建敌机并且实现敌机动画效果
步骤:
- 使用
from
导入plane_sprites
模块
-
from
导入的模块可以直接使用 -
import
导入的模块需要通过模块名.来使用
- 在游戏初始化创建精灵对象和精灵组对象
- 在游戏循环中让精灵组分别调用
update()
和draw(screen)
方法
职责:
精灵:封装图像image、位置rect和速度speed,提供update()
方法,根据游戏需求更新位置rect
精灵组:包含多个精灵对象,让所有精灵调用update()
方法更新位置,使用draw(screen)
方法在screen
上绘制精灵组中所有精灵