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() 更新屏幕。

继续下一个教程,学习如何添加游戏逻辑和构建游戏🙂