@yanglt7
2018-12-09T10:49:16.000000Z
字数 2144
阅读 664
Pygame
Pygame 是一个利用 SDL(Simple DirectMedia Layer)库实现的模块。(注:SDL是一套开放源代码的跨平台多媒体开发库,使用 C 语言写成。SDL 提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台的应用软件。目前 SDL 多用于开发游戏、模拟器、媒体播放器等多媒体应用领域)。
官网:www.pygame.org
作为一个游戏模块,Pygame 实现的主要功能有:
例 1
绘制一个可以不断移动的小乌龟,每当移动到窗口的左右边界时,会自动“掉头”。
import pygame
import sys
# 初始化Pygame
pygame.init()
size = width, height = 1000, 800
speed = [-2, 1]
bg = (255, 255, 255)
# 创建指定大小的窗口
screen = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption("初次见面,请多多关照!")
# 加载图片
turtle = pygame.image.load("turtle.png")
# 获得图像的位置矩形
position = turtle.get_rect()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# 移动图像
position = position.move(speed)
if position.left < 0 or position.right > width:
# 翻转图像
turtle = pygame.transform.flip(turtle, True, False)
# 反方向移动
speed[0] = -speed[0]
if position.top < 0 or position.bottom > height:
speed[1] = -speed[1]
# 填充背景
screen.fill(bg)
# 更新图像
screen.blit(turtle, position)
# 更新界面
pygame.display.flip()
# 延迟10毫秒
pygame.time.delay(25)
display.set_mode() 方法创建一个 Surface 对象,在这里将它作为背景画布,后面将它填充为纯白色。
image.load() 方法用于加载图片,支持 GIF, JPG, PNG, BMP 等格式的图片。
get_rect() 用于获得该 Surface 对象的矩形区域,其实这个矩形区域也是一个对象,主要用来描述图像的位置大小信息。
紧接着进入一个死循环,确保游戏可以不断地运行下去。
Pygame中,用户的一切行为都会变成一个个事件消息,放在事件队列里边。迭代获取每个事件消息,检测如果是 QUIT(退出)事件,那么就调用 sys.exit() 退出程序。
Rect 对象拥有一个 move() 方法,用于移动该矩形区域,事实上就是修改该矩形的坐标。
transform.flip() 方法用于翻转图片,第二个参数表示水平翻转,第三个参数表示垂直翻转。
screen.blit() 用于将一个 Surface 对象放到另一个 Surface 对象上方。
display.flip() 刷新页面。由于 Pygame 采用的是双缓冲模式,因此需要调用 display.flip() 方法将缓冲好的画面一次性刷新到显示器上。所谓双缓冲,即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制在内存中的这个对象上,再一次性将这个对象上的图形复制到屏幕上,这样能大大加快绘图的速度以及避免闪烁现象。
time.delay() 方法让程序挂起。
Surface对象
将一个图像绘制到另一个图像上
移动图像
控制游戏速度
clock = pygame.time.Clock() # 实例化 Clock 对象
clock.tick(200) # 设置不高于 200 帧执行
摘自《零基础入门学习Python》