对于pygame的介绍,在网上真的基本上千篇一概,大多会感慨感谢一下做者,可惜一下这个包在09年的时候就中止更新(可是它神奇地在17年1月份更新了)。真正的它的意义,不多人说起。下面引用一下《pygame菜鸟入门指南》里的一段介绍:python
pygame是一个由Pete Shinners编写的SDL的Python封装。这就意味着,使用pygame,你能够写出能够不做修改就能够在任何支持SDL的平台(Windows, Unix, Mac, BeOS,等等)上运行的游戏或者多媒体程序。linux
简单的理解一下,它的底层是使用C编写的SDL(simple DirectMedia Layer)。提供了多种控制凸显个、声音、输出入得函数。让开发者是要用相同或者是类似的代码就能够开发出跨多个平台(linux、windows、mac OS X等)的应用软件。目前SDL多用于开发游戏,模拟器,媒体播放器等多媒体应用领域……shell
SDL内置调用了OpenGL的函数。……SDL也有其余语言的包装,SDL用C语言写成,可是很容易在C++下工做,而且绑定了许多其余的语言……包装的比较好的是python语言的pygame……windows
在我省略了好多……以后,pygame和SDL和OpenGL的关系渐渐明朗了起来。虽然没有对pygame的能力有很详细的描述,可是也能简单了解它的主要应用场景和主要的功能。框架
超简单,若是有完整的python开发环境,这个应该不是什么问题。函数
pip install pygame
模块名 | 功能 |
---|---|
pygame.cdrom |
访问光驱 |
pygame.cursors |
加载光标 |
pygame.display |
访问显示设备 |
pygame.draw |
绘制形状、线和点 |
pygame.event |
管理事件 |
pygame.font |
使用字体 |
pygame.image |
加载和存储图片 |
pygame.joystick |
使用游戏手柄或者相似的东西 |
pygame.key |
读取键盘按键 |
pygame.mixer |
声音 |
pygame.mouse |
鼠标 |
pygame.movie |
播放视频 |
pygame.music |
播放音频 |
pygame.overlay |
访问高级视频叠加 |
pygame.rect |
管理矩形区域 |
pygame.sndarry |
操做声音数据 |
pygame.sprite |
操做移动图像 |
pygame.surface |
管理图像和屏幕 |
pygame.surfarry |
管理点阵图像数据 |
pygame.time |
管理时间和帧信息 |
pygame.transform |
缩放和移动图像 |
其中一些我以为比较重要的或者在初级使用阶段会常常碰到的一些字段,我都添加了标记,在以后的学习中能够重点关注一下这一块的源码。学习
有些模块可能在某些平台上不存在(有这个名称字段,可是为空),能够用None判断一下。字体
In [3]: pygame.font is None Out[3]: False
background_image_filename = 'sushiplate.jpg' mouse_image_filename = 'fugu.png' #指定图像文件名称 import pygame #导入pygame库 from pygame.locals import * #导入一些经常使用的函数和常量 from sys import exit #向sys模块借一个exit函数用来退出程序 pygame.init() #初始化pygame,为使用硬件作准备 screen = pygame.display.set_mode((640, 480), 0, 32) #建立了一个窗口 pygame.display.set_caption("Hello, World!") #设置窗口标题 background = pygame.image.load(background_image_filename).convert() mouse_cursor = pygame.image.load(mouse_image_filename).convert_alpha() #加载并转换图像 while True: #游戏主循环 for event in pygame.event.get(): if event.type == QUIT: #接收到退出事件后退出程序 exit() #这个负责监听事件的循环很是重要,是event模块在pygame程序中最频繁的使用 screen.blit(background, (0,0)) #将背景图画上去 blit(图片源,起始点) x, y = pygame.mouse.get_pos() #得到鼠标位置 x-= mouse_cursor.get_width() / 2 y-= mouse_cursor.get_height() / 2 #计算光标的左上角位置 screen.blit(mouse_cursor, (x, y)) #把光标画上去 pygame.display.update() #刷新一下画面
上面的程序其实注释已经很是详尽了,咱们有几点须要注意的:code
set_mode(resolution=(0,0), flags=0, depth=0) -> Surface Initialize a window or screen for display
它须要三个参数,resolution就是分辨率,flags就是标志位,depth是色深
分辨率很好理解暂时就很少BB了,flags具体见下表,若是不须要什么特性,就0orm
标志位 | 功能 |
---|---|
FULLSCREEN | 建立一个全屏窗口 |
DOUBLEBUF | 建立一个“双缓冲”窗口,建议在HWSURFACE或者OPENGL时使用 |
HWSURFACE | 建立一个硬件加速的窗口,必须和FULLSCREEN同时使用 |
OPENGL | 建立一个OPENGL渲染的窗口 |
RESIZABLE | 建立一个能够改变大小的窗口 |
NOFRAME | 建立一个没有biang狂的窗口 |
convert
函数试讲图像数据都转化为surface对象,每次加载完图像之后就应该作这件事件(使用频率很高,若是你不写,pygame也会帮你写);convert_alpha
相比convert
保留了ALPHA通道信息(就简单理解为透明的部分),这样就能够得到PNG图标的效果。
blit
是一个重要函数。第一个参数是一个surface对象,第二个为左上角位置,画完一个后要记得update
更新一下,不然会出现画面一片漆黑的状况。
blit(source, dest, area=None, special_flags = 0) -> Rect draw one image onto another