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()
更新螢幕。
繼續下一個教程,學習如何新增遊戲邏輯和構建遊戲🙂