转载注明链接:https://www.cnblogs.com/liquancai/p/13219786.html
Pygame 基础知识
1. 安装Pygame库
-
pygame
是一个Python模块,专为电子游戏设计 -
官方网站 : https://www.pygame.org/
网站栏目 内容 GettingStarted 在各平台安装模块的说明 Docs pygame模块所有类和子类的参考手册 -
安装pygame
直接在 命令提示符 窗口输入:
pip install pygame
-
验证安装
同样在 命令提示符 窗口输入:
python -m pygame.example.aliens
出现一个动画窗口即表示安装成功。
-
2. Pygame的模块
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 | Python模块,专为电子游戏设计 |
pygame.rect | 管理矩形区域 |
pygame.sndarray | 操作声音数据 |
pygame.sprite | 操作移动图像 |
pygame.surface | 管理图像和屏幕 |
pygame.surfarray | 管理点阵图像数据 |
pygame.time | 管理时间和帧信息 |
pygame.transform | 缩放和移动图像 |
建立 Pyagme
项目和建立其他 Python
项目一样,在IDLE或文本编辑器中新建一个空文档,需要告诉 Python
该程序用到了 Pygame
模块。
为了实现此目的,需要用 import
指令告诉 Python
载入外部模块。如下:
import pygame, sys, time, random
from pygame.locals import *
第1行引入 pygame
的主要模块 、sys
模块 、time
模块 、random
模块
第2行告诉 python
载入 pygame.locals
的所有指令使它们成为原生指令,这样在使用这些指令时就不需要使用全名调用。
由于硬件和游戏的兼容性或者请求的驱动没有安装的问题,有些模块可能在某些平台上不存在,可以使用 None
调试一下。例如测试字体是否载入:
if pygame.font is None:
print("The font module is not available!")
pygame.quit() # 如果没有则退出pygame的应用环境
3. 常用模块简要说明
1. pygame.surface
该模块中有一个 surface()
函数,surface()
的一般格式如下:
pygame.surface((width, height), flags=0, depth=0, masks=None)
它返回一个新的 surface
对象,这里的 surface
对象是一个有确定尺寸的空图像,可以用它进行图像的绘制与移动。
2. pygame.locals
在 pygame.locals
模块中定义了 pygame
环境中用到的各种常量,而且包括事件类型 、按键和视频模式等的名字,在导入所有内容( from pygame.locals import *
) 时用起来很安全。
如果用户知道需要的内容,也可以导入具体的内容(例如 form pygame.locals import FULLSCREEN
)。
3. pygame.display
pygame.display
模块包括处理 pygame
显示方式的函数,其中包括普通窗口和全屏模式。
游戏程序通常需要下面的函数:
-
flip() / update()
flip()
: 更新显示。一般来说,在修改当前屏幕的时候要经过两步,首先要对get_surface()
函数返回的surface
对象进行修改,然后调用pygame.display.flip()
更新显示以反映所做的修改。update()
: 在只想更新屏幕的一部分的时候使用update()
函数,而不是flip()
函数
-
set_mode
该函数建立游戏窗口,返回
surface
对象。它有3个参数,第1个参数是元组,用于指定窗口的尺寸;第2个参数是标志位,具体含义如下表所示,例如FULLSCREEN
表示全屏,默认值为不对窗口进行设置,可根据需要选用;第3个参数为色深,用于指定窗口的色彩位数。
set_mode
的窗口标志位的参考取值窗口标志位 功能 FULLSCREEN 创建一个全屏窗口 DOUBLEBUF 创建一个 “双缓冲” 窗口,建议在 HWSURFACE 或者 OPENGL 时使用 HWSURFACE 创建一个硬件加速窗口,必须和 FULLSCREEN 同时使用 OPENGL 创建一个 OPENGL 渲染的窗口 RESIZABLE 创建一个可以改变大小的窗口 NOFRAME 创建一个没有边框的窗口 -
set_caption()
该函数设定游戏程序的标题。当游戏以窗口模式(对应于全屏)运行时尤其有用,因为该标题会作为窗口的标题。
-
get_surface()
该函数返回一个可用来画图的
surface
对象。
4. pygame.font
pygame.font
模块用于表现不同字体,可以用于文本。
5. pygame.sprite
pygame.sprite
模块有两个非常重要的类—— sprite
精灵类和 Group
精灵组类。
sprite
精灵类是所有可视游戏的基类。为了实现自己的游戏对象,需要子类化 sprite
,覆盖它的构造函数,以设定 image
和 rect
属性(决定 sprite
的外观和放置的位置),再覆盖 update()
方法。在sprite
需要更新的时候可以调用 update()
方法。
Group
精灵组类的实例作为 sprite
精灵对象的容器。在一些简单的游戏中,只要创建名为:sprites
,allsprite
或是其他类型的组,然后将所有 sprite
精灵对象添加到上面即可。当 Group
精灵组对象的 update()
方法被调用时会自动调用所有 sprite
精灵对象的 update()
方法。Group
精灵组对象的 clear()
方法用于清理它包含的所有 sprite
对象。Group
精灵组对象的 draw()
方法用于绘制所有的 sprite
对象。
6. pygame.mouse
该模块用来管理鼠标
pygame.mouse.set_visible(False/True)
:隐藏显示鼠标光标。
pygame.mouse.get_pos()
:获取鼠标位置。
7. pygame.event
pygame.event
模块会追踪鼠标单击 、鼠标移动 、按键按下和释放等事件。其中 pygame.event.get()
可以获取最近事件列表。
8. pygame.image
这个模块用于处理保存在 GIF 、PNG 或者 JPEG 内的图形,用户可以用 load()
函数来读取图像文件。