06:動圖的本質!快起來,給我走兩步#python遊戲程式設計#紅傘傘

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

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

xa

0.前言

hello,小夥伴們!我還是帶你們一起寫遊戲的貓姐。
今天是這個遊戲的,第6集了!上一集,我們給遊戲主角換了個馬甲,將小方塊變成了小男孩!今天我們要讓,小男孩的雙腳,靈活的動起來,效果是這樣的!

1.動圖的原理

我們讓小男孩的雙腳動起來後,在視覺上,就感覺小男孩在走路一樣!
動圖的基本原理就是多張圖片不停地播放!
這裡我們用三張圖片,在image目錄下,我已經準備好了 小男孩的三張圖片,我們把原先的player.png命名為player0.png,後兩張圖片是player1.png,player2.png
我們回來寫程式碼。
在這裡,我們還是修改Player類,我們用for迴圈,把這三張圖片都load進來,load進來的圖片,我們將這三個圖片對像,都放到self.plays這個列表中,這裡我先寫完程式碼,再一行一行的講解。

self.plays = []
for i in range(3):
    image_filename = "./images/player" + str(i) + ".png"
    image = pygame.image.load(image_filename)
    self.plays.append(image)

通過for i in range(3):
我們拼接出男孩圖片的路徑,然後賦值給image_filename,
再使用pygame.image.load函式 來匯入這張圖片,括號裡面傳入的是圖片的路徑。
大家有沒有發現,這個pygame.image.load函式我已經用過很多次了,希望大家記住這個匯入圖片的函式。
最後,通過self.plays的append函式把圖片都追加到列表中。

接下來,我們要在update函式中,用blit函式,輪流繪製這三張小男孩的圖片,我們只需要把self.image換成self.plays[self.image_index]就ok了!

    def update(self):
        screen.blit(self.plays[self.image_index], self.rect)

這裡用到了一個新的變數self.image_index,所以我們要在init函式中將它賦值為0。

self.image_index = 0

我們執行程式,看下效果。可以看到,小男孩的雙腳,沒有任何變化!

怎麼回事呢?因為image_index一直為0,所以顯示的一直是player0.png這張圖片。

我們還需要讓image_index這個變數,不停的取0,1, 2這三個值 。
所以,我們需要寫一個更新image_index變數的函式:

def update_image_index(self):
    self.image_change_time += 1
    if self.image_change_time > 2:
        self.image_change_time = 0
        self.image_index = (self.image_index + 1) % 3

上面用到了一個新的變數,self.image_change_time,所以在init函式中,我們將image_change_time賦值為0:

self.image_change_time = 0

最後,我們在update函式中加一行程式碼,呼叫update_image_index函式。

def update(self):
    self.update_image_index()
    screen.blit(self.plays[self.image_index], self.rect)

好了,我們執行遊戲,看下效果。

可以看到,小男孩的雙腳已經動起來了。
有意思吧,真是滿滿的成就感啊!

關注貓姐,下一集我們來搞從天而降的蘑菇!

相關文章