Pygame是Python平台下的一款优秀的2D游戏软件开发专用库。通过一个简单的开发示例演示了基于Pygame开发游戏软件的基本过程。
1 概述
游戏开发是软件开发领域中的一个重要分支,一款好的游戏不但可以带给用户精彩的娱乐享受,同时也能为游戏开发者带来丰厚的回报。虽然从事游戏开发这类工作的收入颇丰,但游戏开发所涉及的技术却是最多的,即使是开发一款简单的游戏,开发者也可能会涉及到计算机图形学、数学、物理学甚至人工智能等高级软件开发技术。因此,游戏开发是一个既有趣又有挑战性的软件开发领域。
Pygame(www.pygame.org)是Python平台下的一款著名的2D游戏开发专用库,该开发库构建在著名的跨平台游戏开发库 SDL(Simple Direct Media)之上,其中提供了全面的游戏开发支持模块,从而可以使游戏开发的难度大为降低。
2 开发示例
下面通过一个简单的游戏程序来介绍一下基于Pygame开发游戏软件的基本过程。
"""分别定义游戏场景的背景图片和鼠标光标图片。"""
BACKGROUND_IMG="background.jpg"
MOUSE_CURSOR_IMG="mouse_cursor.png"
"""导入Pygame开发库,从而可以让开发者在后续程序代码中使用该库中包含的各种子模块。"""
import pygame
from sys import exit
"""初始化Pygame开发库中的所有子模块,使该程序可以访问计算机上的相关设备。"""
pygame.init()
"""在屏幕上建立一个分辨率为640X480,色深为32bits的程序窗口。"""
screen = pygame.display.set_mode((640, 480), 0, 32)
"""设置程序窗口的标题为字符串Hello, World!"""
pygame.display.set_caption("Hello, World!")
"""分别将游戏场景背景图片文件和鼠标光标图片文件加载到内存中。"""
background = pygame.image.load(BACKGROUND_IMG).convert()
mouse_cursor=pygame.image.load(MOUSE_CURSOR_IMG)
"""开始游戏主循环。"""
while True:
"""开始游戏事件循环,从Pygame的事件队列中依次取出每一个事件,判断是否为QUIT(退出游戏程序)事件,若当前取出的是QUIT事件则调用exit函数退出游戏程序。"""
for event in pygame.event.get():
if event.type == QUIT:
exit()
"""将游戏场景背景图片拷贝到窗口中以坐标(0,0)为左上角的位置。"""
screen.blit(background, (0,0))
"""得到当前鼠标光标所在的位置坐标。"""
x, y = pygame.mouse.get_pos()
"""对x和y坐标变量值进行调整,从而使得鼠标光标图片的中心正好位于鼠标光标位置下方。"""
x-= mouse_cursor.get_width() / 2
y-= mouse_cursor.get_height() / 2
"""将鼠标光标图片拷贝到窗口中以坐标(x,y)为左上角的位置。"""
screen.blit(mouse_cursor, (x, y))
"""将前面在缓冲区中绘制的所有图片都无闪烁地显示在游戏程序窗口中。"""
pygame.display.update()
从该游戏程序的编制思路可以看出基于Pygame开发游戏的一般过程是:首先完成Pygame的初始化工作,然后进入游戏程序的主循环,该循环是游戏程序的核心部分,在其中要完成游戏程序的各种主要功能,如(图1)所示。
3 结语
综上所述,在Pygame的帮助下,游戏开发变得相对简单,开发者可以专注于游戏开发的核心部分,而把一些旁枝末节的问题交给Pygame处理。值得一提的是,Pygame是跨平台的,基于Pygame开发的游戏几乎不做任何修改就可以运行于各种主流操作系统平台之上。目前,已经有越来越多的游戏基于Pygame进行开发。因此,Pygame是一款非常值得掌握的游戏开发工具。
作者:刘班 来源:数字技术与应用 2013年8期