Pygame 框架中的模块
在Pygame 框架中有很多模块,官方网址 http://pygame.org/ 。 其中最常用模块的具体说明如表 1-1 所示。
表1-1 Pygame 框架中的常用模块
【示例 1-1】开发第一个 Pygame 程序
import pygame
# 初始函数,使用 pygame 的第一步;
pygame.init()
# 生成主屏幕 screen
screen=pygame.display.set_mode((600,500),0,32)
# 设置标题
pygame.display.set_caption('Hello Pygame')
while True:
# 刷新屏幕
pygame.display.update()
执行结果如图 1-1 所示:
图 1-1 示例 1-1 运行效果图
对上述示例代码的具体说明如下所示。
(1)set_mode 函数:会返回一个 Surface 对象,代表了在桌面上出现的那个窗口。在 3 个参数中,第 1 个参数为元组,表示屏幕的大小;第 2 个标志位,具体含义如表 1-2 所示,如果不用什么特性,就指定 0;第 3 个为色深。
表 1-2 各个标志位的具体含义
(2)游戏的主循环是一个无限循环,直到用户退出。在这个主循环里面做的事情就是不停的刷新新画面。
注意:
□如果未安装 pygame 模块的,打开控制台执行 pip install pygame 命令进行安装。
事件操作
事件是一个操作,通常来说,Pygame 会接受用户的各种操作(比如按键盘,移动鼠标等)。这些操作会产生对应的事件,例如按键盘事件,移动鼠标事件。事件在软件开发中非常重要,Pygame 把一系列的事件存放在一个队列里,并逐个进行处理。
1.事件检索
使用函数 pygame.event.get()获取所有的事件,表 1-3 列出了 Pygame 中常用的事件。
表1-3 Pygame 中常用的事件
2.处理鼠标事件
在 Pygame 框架中,MOUSEMOTION 事件会在鼠标动作的时候发生,它有如下所示3 个参数。
□buttons:一个含有 3 个数字的元组,3 个值分别代表左键、中键和右键,1 就表示按下。
□pos:位置
□rel:代表现在距离上次产生鼠标事件时的距离
和 MOUSEMOTION 类 似 , 常 用 的 鼠 标 事 件 还 有 MOUSEBUTTONUP 和MOUSEBUTTONDOWN 两个。在很多时候,开发者只需要知道鼠标按下就可以不
用上面那个比较强大的事件了。这两个事件的参数如下所示。
□button:这个值代表操作哪个按键
□pos:位置
3.处理键盘事件
在 Pygame 框架中,键盘和游戏手柄的事件比较类似,处理键盘的事件为 KEYDOWN和KEYUP。KEYDOWN 和 KEYUP 事件的参数描述如下所示。
□key:按下或者放开的键值,是一个数字,因为很少有人可以记住,所以在 Pygame中可以使用 K_xxx 来表示,比如字母 a 就是 K_a,还有 K_SPACE 和 K_RETURN等。
□mod:包含了组合键信息,如果 mod&KMOD_CTRL 是真,表示用户同时按下了Ctrl 键,类似的还有 KMODE_SHIFT 和 KMODE_ALT。
□unicode:代表了按下键对应的 Unicode 值。
【示例 1-2】处理键盘事件
import pygame
pygame.init()
screen=pygame.display.set_mode((600,500),0,32)
# 加载图片
image=pygame.image.load('pic01.gif')
# 设置x,y初始值作为初始位置
x,y=0,0
# 设置横向和纵向两个方向的移动距离
while True:
for event in pygame.event.get():
# 如果是退出
if event.type==pygame.QUIT:
exit()
# 如果是按下
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_LEFT:
x-=10
elif event.key==pygame.K_RIGHT:
x+=10
elif event.key==pygame.K_UP:
y-=10
elif event.key==pygame.K_DOWN:
y+=10
screen.fill((0,0,0))
screen.blit(image