02:遊戲主角就長這樣?小方塊的顯示,物件導向程式設計

貓姐_遊戲程式設計發表於2022-04-20

宣告: 原創不易,未經許可,不得轉載

xa

0.前言

hello,大家好,我是帶你們一起寫遊戲的貓姐。
今天我們接著做小朋友吃蘑菇的小遊戲!在第一集程式碼的基礎上,我們來實現一個小方塊的顯示,效果是這樣的。

pygame基本框架:

程式碼顯示

貓姐再強調一下:上面的程式碼雖然只有10行,卻是pygame這個框架的精髓,不管你的遊戲是簡單還是複雜,都是建立在這個程式碼的基礎上,所以大家一定要認真領會這10行程式碼的意思。

1.定義一個方塊類

我們先來實現方塊的顯示,這裡稍微要一點物件導向程式設計的知識,我們用class定義一個類,類名叫Player,在類名的括號裡面,傳入pygame.sprite.Sprite這個類,讓Player繼承精靈。然後在類裡,實現我們自己的建構函式def __init__(self),用super函式來呼叫精靈父類的建構函式。

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super(Player, self).__init__()

在建構函式裡面,我們用pygameSurface函式生成一個寬為60畫素,高為30畫素的小方塊,給這個小方塊取個名,叫self.image。因為螢幕的顏色是黑色的,所以我們要給小方塊填充點不一樣的顏色,用self.image.fill函式給小方塊填充白色。通過self.imageget_rect函式可以得到小方塊的矩形區域,在括號裡面,需要設定矩形區域的顯示位置,也就是最後程式執行起來後,小方塊最初在哪裡顯示。在這裡,我們讓小方塊在螢幕的中心顯示,所以它的左頂點即x的座標為left=WIDTH//2,左頂點y的座標為top=HEIGHT//2

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super(Player, self).__init__()
        self.image = pygame.Surface((60, 30))
        self.image.fill("white")
        self.rect = self.image.get_rect(left=WIDTH//2, top=HEIGHT//2)

現在程式執行起來沒有任何效果,因為沒有將圖片繪製到遊戲視窗。接下來,我們定義一個update函式,將小方塊繪製出來。我們呼叫screen.blit函式,括號裡面傳入的是要顯示的圖片名稱self.image,以及圖片要在哪裡顯示。

def update(self):
    screen.blit(self.image, self.rect)

1.1 方塊的顯示

我們現在將小方塊顯示在遊戲視窗,我們在while迴圈外面,生成一個player物件,然後在while迴圈裡面,呼叫player物件的update函式,繪製出小方塊!我們執行程式看看效果!

# 例項化Player物件
player = Player()
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    player.update()
    pygame.display.update()

好了,我們看到小方塊已經顯示出來了!下一集我們讓小方塊動起來!

相關文章