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 結構和邏輯更加清晰。

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