Pygame 的遊戲開發

歡迎閱讀本系列的第一篇教程:使用Pygame構建遊戲。使用 Pygame 建立的遊戲可以在支援 Python 的任何機器上執行,包括 Windows、Linux 和 Mac OS。

在本教程中,我們將解釋使用 Pygame 構建遊戲的基礎。我們將從基礎開始,並將教你如何建立基本框架。在下一個教程中,你將學習如何製作某些型別的遊戲。

PyGame 介紹

遊戲總是以與此類似的順序開始(虛擬碼):

initialize()
while running():
   game_logic() 
   get_input()
   update_screen()
deinitialize()

遊戲從初始化開始。載入所有圖形、聲音,等級以及所有需要載入的資料。遊戲繼續執行,直到收到退出事件。在這個遊戲迴圈中,我們更新遊戲,獲取輸入並更新螢幕。根據遊戲的不同,實施方式也各不相同,但這種基本結構在所有遊戲中都很常見。

在 Pygame 中,我們將其定義為:

import pygame
from pygame.locals import *
 
class App:
 
    windowWidth = 640
    windowHeight = 480
    x = 10
    y = 10
 
    def __init__(self):
        self._running = True
        self._display_surf = None
        self._image_surf = None
 
    def on_init(self):
        pygame.init()
        self._display_surf = pygame.display.set_mode((self.windowWidth,self.windowHeight), pygame.HWSURFACE)
        self._running = True
        self._image_surf = pygame.image.load("pygame.png").convert()
 
    def on_event(self, event):
        if event.type == QUIT:
            self._running = False
 
    def on_loop(self):
        pass
 
    def on_render(self):
        self._display_surf.blit(self._image_surf,(self.x,self.y))
        pygame.display.flip()
 
    def on_cleanup(self):
        pygame.quit()
 
    def on_execute(self):
        if self.on_init() == False:
            self._running = False
 
        while( self._running ):
            for event in pygame.event.get():
                self.on_event(event)
            self.on_loop()
            self.on_render()
        self.on_cleanup()
 
if __name__ == "__main__" :
    theApp = App()
    theApp.on_execute()

Pygame 程式以建構函式 __init __() 開頭。一旦完成後,呼叫 on_execute()。此方法來執行遊戲:它更新事件,更新螢幕。最後,使用 on_cleanup() 取消初始化遊戲。

在初始化階段,我們設定螢幕解析度並啟動 Pygame 庫:

def on_init(self):
	pygame.init()
	self._display_surf = pygame.display.set_mode(
        (self.windowWidth,self.windowHeight), 
        pygame.HWSURFACE)

我們還載入影象。

self._image_surf = pygame.image.load("pygame.png").convert()

這不會將影象繪製到螢幕上,繪製發生在 on_render() 中。

def on_render(self):
    self._display_surf.blit(self._image_surf,(self.x,self.y))
    pygame.display.flip()

blit 方法將影象(image_surf)繪製到座標 (x,y)。在 Pygame 中,座標從左上角(0,0)開始到 (wind0wWidth,windowHeight)。方法呼叫 pygame.display.flip() 更新螢幕。

繼續下一個教程,學習如何新增遊戲邏輯和構建遊戲🙂