原文: https://pythonspot.com/game-development-with-pygame/

用 Pygame 开发游戏 - 图1

Pygame Python

欢迎来到该系列的第一篇教程:使用 Pygame 构建游戏。 使用 Pygame 创建的游戏可以在支持 Python 的任何计算机上运行,包括 Windows,Linux 和 Mac OS。

在本教程中,我们将解释使用 Pygame 构建游戏的基础。 我们将从基础开始,并教您如何创建基础框架。 在接下来的教程中,您将学习如何制作某些类型的游戏。

PyGame 简介

您将得到一个与右边的程序相似的程序:

游戏总是以与此类似的顺序(伪代码)开始:

  1. initialize()
  2. while running():
  3. game_logic()
  4. get_input()
  5. update_screen()
  6. deinitialize()

游戏从初始化开始。 已加载所有图形,已加载声音,已加载级别以及需要加载的任何数据。 游戏将继续运行,直到收到退出事件为止。 在此游戏循环中,我们更新游戏,获取输入并更新屏幕。 具体实现取决于游戏,但这种基本结构在所有游戏中都很常见。

在 Pygame 中,我们将其定义为:

  1. import pygame
  2. from pygame.locals import *
  3. class App:
  4. windowWidth = 640
  5. windowHeight = 480
  6. x = 10
  7. y = 10
  8. def __init__(self):
  9. self._running = True
  10. self._display_surf = None
  11. self._image_surf = None
  12. def on_init(self):
  13. pygame.init()
  14. self._display_surf = pygame.display.set_mode((self.windowWidth,self.windowHeight), pygame.HWSURFACE)
  15. self._running = True
  16. self._image_surf = pygame.image.load("pygame.png").convert()
  17. def on_event(self, event):
  18. if event.type == QUIT:
  19. self._running = False
  20. def on_loop(self):
  21. pass
  22. def on_render(self):
  23. self._display_surf.blit(self._image_surf,(self.x,self.y))
  24. pygame.display.flip()
  25. def on_cleanup(self):
  26. pygame.quit()
  27. def on_execute(self):
  28. if self.on_init() == False:
  29. self._running = False
  30. while( self._running ):
  31. for event in pygame.event.get():
  32. self.on_event(event)
  33. self.on_loop()
  34. self.on_render()
  35. self.on_cleanup()
  36. if __name__ == "__main__" :
  37. theApp = App()
  38. theApp.on_execute()

Pygame 程序以构造函数__init__()开始。完成后,将调用on_execute()。此方法运行游戏:更新事件,更新屏幕。最后,使用on_cleanup()对游戏进行初始化。

在初始化阶段,我们设置屏幕分辨率并启动 Pygame 库:

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

我们还加载图像。

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

这不会将图像绘制到屏幕上,而是发生在on_render()中。

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

blit方法将图像(image_surf)绘制到坐标(x, y)。 在 Pygame 中,坐标从(0, 0)左上角开始到(wind0wWidth, windowHeight)。 方法调用pygame.display.flip()更新屏幕。

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