pygame 的使用(1)

参考教程:http://www.pythontab.com/html/2012/pythongui_1220/15.html

Pygame是一个利用SDL库的写就的游戏库,SDL呢,全名Simple DirectMedia Layer,是一位叫做Sam
Lantinga的大牛写的,据说他为了让Loki(致力于向Linux上移植Windows的游戏的一家大好人公司,可惜已经倒闭,唉好人不长命啊……)更有效的工作,创造了这个东东。

opensuse安装

sudo zypper in python-pygame    #安装pygame模块

python          #进入python交互环境
>>> import pygame       #导入pygame模块
>>> print pygame.ver    #查看版本,若有输出则表示已安装
1.9.1release

使用Pygame

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 就是我们在学的这个东西了……
pygame.rect 管理矩形区域
pygame.sndarray 操作声音数据
pygame.sprite 操作移动图像
pygame.surface 管理图像和屏幕
pygame.surfarray 管理点阵图像数据
pygame.time 管理时间和帧信息
pygame.transform 缩放和移动图像

有些模块可能在某些平台上不存在,你可以用None来测试一下。

if pygame.font is None:
    print "The font module is not available!"
    exit()

hello world程序

效果:多拉A梦会随着鼠标的移动而移动
pygame 的使用(1)_第1张图片

#!/usr/bin/env python

background_image='bing.jpg'    #选取一张图片作为背景
mouse_image='ascii_dora.png'   #选取一张跟随鼠标移动的图片

import pygame                  #导入pygame模块
from pygame.locals import *    #导入一些常用的函数和常量
from sys import exit           #导入exit函数

pygame.init()

screen=pygame.display.set_mode((640,400),0,32)
pygame.display.set_caption('hello,world!')
background=pygame.image.load(background_image).convert()
mouse_cursor=pygame.image.load(mouse_image).convert_alpha()

while True:
    for event in pygame.event.get():
        if event.type==QUIT:
            exit()
    screen.blit(background,(0,0))
    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()

与上面程序相关的几个函数:

  1. set_mode会返回一个Surface对象,代表了在桌面上出现的那个窗口,三个参数:
    第一个为元祖,代表分 辨率(必须);
    第二个是一个标志位,具体意思见下表,如果不用什么特性,就指定0;
    第三个为色深。

    标志位 功能
    FULLSCREEN 创建一个全屏窗口
    DOUBLEBUF 创建一个“双缓冲”窗口,建议在HWSURFACE或者OPENGL时使用
    HWSURFACE 创建一个硬件加速的窗口,必须和FULLSCREEN同时使用
    OPENGL 创建一个OPENGL渲染的窗口
    RESIZABLE 创建一个可以改变大小的窗口
    NOFRAME 创建一个没有边框的窗口

  2. convert函数是将图像数据都转化为Surface对象,每次加载完图像以后就应该做这件事件(事实上因为 它太常用了,如果你不写pygame也会帮你做);convert_alpha相比convert,保留了Alpha 通道信息(可以简单理解为透明的部分),这样我们的光标才可以是不规则的形状。

  3. 游戏的主循环是一个无限循环,直到用户跳出。在这个主循环里做的事情就是不停地画背景和更新光标位置,虽然背景是不动的,我们还是需要每次都画它, 否则鼠标覆盖过的位置就不能恢复正常了。

  4. blit是个重要函数,第一个参数为一个Surface对象,第二个为左上角位置。画完以后一定记得用update更新一下,否则画面一片漆黑。

你可能感兴趣的:(python,二三事)