5 PyGame Sprite

Spirte 的概念在很多游戏引擎中都有,但是没有统一的定义,可以笼统的认为 Sprite 是一个对象,可以方便创建、绘制、管理、销毁运动实例。

PyGame 中的 Sprite 通过继承 Sprite 类实现,主要动作是重载 update 方法和给 image、rect 属性赋值。其中,image 表示这个 Sprite 的显示图形,rect 表示图形的位置和大小,而update用于更新 Sprite 的行为,比如:位置、大小、方向、图形的变化等。

https://www.pygame.org/docs/tut/SpriteIntro.html

前面,我们移动方块的例子是绘制的,现在,我们用 Sprite 来实现:

class Block(pygame.sprite.Sprite):
    # 构造函数,方块颜色和长、宽
    def __init__(self, color, width, height):
       # 调用父类构造函数
       pygame.sprite.Sprite.__init__(self)

       # 创建指定大小方块,填充颜色,也可从图片文件加载
       self.image = pygame.Surface([width, height])
       self.image.fill(color)

       # 获取默认大小和位置
       self.rect = self.image.get_rect()
       # 移动到初始位置
       self.rect = self.rect.move(100, 100)
       # 初始化当前移动方向,向左
       self.direction = 1
    def update(self):
        if width - self.rect.width <= self.rect.left or self.rect.left < 0:
            self.direction = -self.direction
        self.rect = self.rect.move(self.direction, 0)
        # print("update rect", self.direction, width, (width - self.rect.width), self.rect)

block = Block(color, 20, 20)

感觉绘制一个方块比前面需要更多的代码,但是实际上,对于游戏里面众多的动画对象,使用 Sprite 结构和逻辑更加清晰。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章