Python Pygame简介

    关于pygame的安装,需要python 3.6.1或更高版本。我这里是centos7环境,我选择了最省事的方法:yum安装epel源,然后yum install python36-pygame。

简单示例

    理解新库的最佳方法是直接跳入示例。使用代码创建一个弹跳球动画:

import sys, pygame
pygame.init()

size = width, height = 320, 240
speed = [2, 2]
black = 0, 0, 0

screen = pygame.display.set_mode(size)

ball = pygame.image.load("intro_ball.gif")
ballrect = ball.get_rect()

while 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT: sys.exit()

    ballrect = ballrect.move(speed)
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = -speed[1]

    screen.fill(black)
    screen.blit(ball, ballrect)
    pygame.display.flip()

    将代码保存到game.py,使用命令

wget https://www.pygame.org/docs/_images/intro_ball.gif

    将弹跳球图片下载到game.py相同目录。
在这里插入图片描述
    运行game.py文件,即可在GUI界面看到疯狂跳动的弹跳球了。
    分析代码,首先,是导入和初始化pygame。import pygame 导入包,包内包含所有可用的pygame模块。pygame.init()调用负责激活每个模块。
    在第8行,我们调用pygame.display.set_mode()创建了一个图形窗口。Pygame和SDL通过默认使用图形硬件的最佳图形模式来简化此过程。您可以覆盖此模式,SDL将补偿硬件无法执行的任何操作。Pygame将图像表示为Surface对象。display.set_mode()函数创建一个新的Surface对象,该对象代表实际显示的图形。您对此Surface所做的任何绘图都将在显示器上显示。
    在第10行,我们加载了球的图像。Pygame通过SDL_image库支持多种图像格式,包括BMP,JPG,PNG,TGA和GIF。pygame.image.load()函数返回带有球数据的Surface。Surface将保留文件中的所有颜色键或alpha透明度。加载球图像后,我们创建一个名为ballrect的变量。Pygame附带了一个方便的实用程序对象类型Rect,它表示一个矩形区域。稍后,在代码的动画部分,我们将看到Rect对象可以做什么。
    此时,第13行,我们的程序已初始化并准备运行。在无限循环中,我们检查用户输入,移动球,然后绘制球。如果您熟悉GUI编程,那么您就具有处理事件和事件循环的经验。在pygame中这没什么不同,我们检查是否发生了QUIT事件。如果是,我们简单的退出程序,pygame将确保一切正常关闭。
    是时候更新我们的位置了。第17行按当前速度移动ballrect变量。如果球已移动到屏幕外,则第18行到第21行将速度反转。虽然不遵守牛顿物理学,但这是我们所需要的。
    在第23行,我们用黑色RGB填充屏幕来擦除屏幕。如果你从未使用过动画,这可能看起来很奇怪。你可能会问“为什么我们需要删除任何东西,为什么我们不移动屏幕上的球?”这不是电脑动画的工作方式。动画只不过是一系列单一的图像,当按顺序显示时,可以很好地愚弄人眼,使其看到运动。屏幕只是用户看到的单个图像。如果我们不花时间把球从屏幕上抹去,我们会看到球的“轨迹”,因为我们不断地把球拉到新的位置。
    在第24行,我们将球的图像绘制到屏幕上。Surface.blit() 方法处理图像的绘制。blit意味着将像素颜色从一个图像复制到另一个图像。我们给blit方法传递一个要从中复制的源Surface,以及一个将源放置到目标上的位置。
    我们要做的最后一件事实际上是更新可见显示。Pygame使用双缓冲区管理显示。绘制完成后,我们调用 pygame.display.flip() 方法。这使得我们在屏幕Surface绘制的所有内容都变得可见。这种缓冲确保了在屏幕上我们只能看到完全绘制的帧。没有它,用户将在创建时看到屏幕的半成品部分。
    这个简短的pygame介绍到此结束。Pygame还有一些模块可以完成键盘、鼠标和操纵杆的输入处理等任务。它可以混合音频和解码流媒体音乐。使用这些Surface,您可以绘制简单的形状、旋转和缩放图片,甚至可以实时操作图像的像素作为numpy数组。Pygame还可以充当PyOpenGL的跨平台显示层。大部分pygame模块都是用C编写的,很少真正用Python完成。
    pygame网站为每个pygame功能提供了完整的参考文档,并为所有用户提供了教程。pygame源附带了许多例子,例如monkey punching和UFO射击。

Pygame模块概述
cdrom回放
cursors加载光标图像,包括标准光标
display控制显示窗口或屏幕
draw在表面上绘制简单的形状
event管理事件和事件队列
font创建和渲染TrueType字体
image保存和加载图像
joystick管理操纵杆设备
key管理键盘
mouse管理鼠标
sndarray用numpy操作声音
surfarray用numpy处理图像
time控制时序
transform缩放,旋转和翻转图像
参考文档

https://www.pygame.org/docs/tut/PygameIntro.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值