Pygame的几个模块
这篇博客主要是从功能上介绍几个Pygame的模块,没有深入到代码细节。大部分内容来自《Python基础教程》。
- pygame
pygame模块会自动导入其他Pygame模块,所以如果用了 import pygame,就能自动访问其他模块,比如pygame.display等。
pygame模块包括Surface函数(和一些其他工具),它可以返回一个新的Surface对象。Surface对象就是一个有确定尺寸的空图像,可以用来进行图像绘制和移动。移动(blit方法)只意味着将内容从一个表面转移到另外一个表面上面。单词blit是从属于block transfer的缩写BLT衍生而来。
init函数式Pygame游戏的核心。它必须在进入游戏的主事件循环之前调用,它会自动初始化其他所有模块。
如果需要捕捉Pygame特有的错误时,还需要error类。
- pygame.locals
pygame.locals模块包括在你自己的模块作用域内使用的名字(变量),还包括事件类型、键和视频模式等的名字。在导入所有内容(from pygame.locals import *)时它用起来是很安全的。如果你知道自己需要的内容,也可以导入更加具体的内容(比如 from pygame.locals import FULLSEREEN)。
- pygame.display
pygame.display模块包括处理Pygame显示方式的函数,其中包括普通窗口和全屏模式。比如有这些函数:
flip:更新显示。一般来说,当修改当前屏幕的时候需要经过两个步骤。首先,需要对get_surface函数返回的Surface对象进行所有需要的修改。然后调用pygame.display.flip更新显示 以反映你的修改。
update:在只想更新屏幕一部分的时候使用update函数,而不是flip函数。它可以从RenderUpdates类的draw方法中返回的矩形列表一起使用。
set_mode:设定显示的类型和尺寸。会返回一个Surface对象,代表了在桌面上出现的那个窗口,三个参数第一个为元祖,代表分 辨率(必须);第二个是一个标志位,具体意思见下 表,如果不用什么特性,就指定0;第三个为色深。
标志位 | 功能 |
---|---|
FULLSCREEN | 创建一个全屏窗口 |
DOUBLEBUF | 创建一个“双缓冲”窗口,建议在HWSURFACE或者OPENGL时使用 |
HWSURFACE | 创建一个硬件加速的窗口,必须和FULLSCREEN同时使用 |
OPENGL | 创建一个OPENGL渲染的窗口 |
RESIZABLE | 创建一个可以改变大小的窗口 |
NOFRAME | 创建一个没有边框的窗口 |
set_caption:设定Pygame程序的标题,当游戏以窗口模式运行时,显示为窗口的标题。
get_surface:在调用pygame.display.flip或者pygame.display.blit前返回一个可用于画图的Surface对象。
- pygame.font
pygame.font模块包括Font函数。字体对象用于表现不同的字体,可以用于将文本生成为可以再Pygame中用作普通图像的图像。
- pygame.sprite
pygame.sprite模块包括两个非常重要的类:Sprite和Group。
Sprite类是所有可视游戏对象的基类,有过游戏编程经验甚至只是玩过游戏的人应该都知道“精灵”这个词,其实Sprite就是精灵。为了实现自己的游戏对象,需要子类化Sprite,覆盖它的构造函数以设定image和rect属性(决定Sprite的外观和放置的位置),再覆盖update方法,在Sprite需要更新的时候可以调用。
Group类的实例(和它的子类)用作Sprite对象的容器。一般来说,使用group类还是不错的作法。在一些简单的游戏中,只要创建名为sprites或者allsprites或者其他类似的组,然后将所有的Sprite对象添加到上面即可。当调用Group对象的update方法时,它就会自动调用所有Sprite对象的update方法。Group对象的clear方法用于清理它包含的所有Sprite对象(使用回调函数实现清理),draw方法可以用于绘制所有的Sprite对象。
- pygame.mouse
关于鼠标的模块,可以设置参数、获取信息等。如可以使用pygame.mouse.set_visible来设置光标是隐藏还是可见,用pygame.mouse.get_pos来获取鼠标的位置。
- pygame.event
pygame.event模块会追踪鼠标单击、鼠标移动、按键按下和释放等事件。使用pygame.event.get可以获取最近事件列表。
- pygame.image
这个模块用于处理保存在GIF、PNG或JPEG等文件内的图像。pygame.image.load函数用来读取图像文件,并且创建包括该图像的Surface对象。