pygame模块

版权声明:版权归本人,仅供大家参考 https://blog.csdn.net/Dream____Fly/article/details/88234892

函数 & 属性
pygame.init() — 初始化所有导入的 pygame 模块
pygame.quit() — 卸载所有导入的 pygame 模块
pygame.error() — 标准 pygame 异常模块
pygame.get_error() — 获得当前错误信息
pygame.set_error() — 设置当前错误信息
pygame.get_sdl_version() — 获得 SDL 的版本号
pygame.get_sdl_byteorder() — 获得 SDL 的字节顺序
pygame.register_quit() — 注册一个函数,这个函数将在 pygame 退出时被调用
pygame.encode_string() — 对 unicode 或字节对象编码
pygame.encode_file_path() — 将 unicode 或字节对象编码为文件系统路径

pygame 包是可供使用的最顶层的包。Pygame 被分成许多子模块,但是并不会影响程序使用 Pygame。

为了方便,在 pygame 中绝大多数的顶级变量被放入名为“pygame.locals”的模块中。意思是说这些变量可通过以下方式导入:
import pygame
from pygame.locals import *

当你导入 pygame 后,所有可用的 pygame 子模块都将自动被导入。需要注意的是,一些 pygame 模块是“可选的”,并且可能无法使用。以防万一,Pygame 将提供了一个占位符对象替代原来的模块,这个对象可用来测试某些功能(变量)是否可用。

函数 & 属性详解

pygame.init()

初始化所有导入的 pygame 模块。
init() -> (numpass, numfail)
初始化所有导入的 pygame 模块,如果有模块导入失败也不会显示异常,但是将返回一个元组,第一个元素为成功导入的模块数,第二个元素为导入失败的个数。
也许你想分开初始化不同的模块,以提高你程序的运行速度,或者不加载暂时用不到的模块。
重复调用 init() 方法是没问题的,也不会有任何负面影响。即使你已经调用了 pygame.quit() 卸载所有模块也是可以的。

pygame.quit()

卸载所有导入的 pygame 模块。
quit() -> None
卸载所有之前被初始化的 pygame 模块。当 python 解释器关闭时,这个方法将被无条件地调用,所以你的程序并不需要调用这个方法,除非你想要终止 pygame 资源,并继续执行其他功能。多次执行这个方法也是没有问题的。
注意:调用这个方法 pygame.quit() 会结束所有模块,但不会结束你的程序。建议用正常结束 python 程序的方法来结束 pygame 程序。
exception pygame.error
标准的 pygame 异常。
raise pygame.error(message)
当 pygame 或 SDL 操作失败时,将会引发异常。你可以捕获任何可预见的问题并处理异常。报告异常时,会同时显示问题的描述信息。
它是 RuntimeError 异常的子类,用于捕获这些异常。

pygame.get_error()

得到当前错误信息。
get_error() -> errorstr
获取 SDL 维护的一个内部错误消息。当标准 pygame.error() 标准 pygame 异常引发时,这些信息将会提供给你。
其实你很少会使用到这个方法的啦。

扫描二维码关注公众号,回复: 5876923 查看本文章

pygame.set_error()

设置当前错误信息。
set_error(error_msg) -> None
设置 SDL 维护的一个内部错误消息。当标准 pygame.error() 标准 pygame 异常引发时,这些信息将会提供给你。
其实你很少会使用到这个方法的啦。

pygame.get_sdl_version()

获得 SDL 的版本号。
get_sdl_version() -> major, minor, patch
返回 SDL 库有关版本的 3 个数字。这个版本是在编译时生成的。这个方法可用来得知哪个元件是不能正常使用的。

Pygame 1.7.0 新添加的方法。

pygame.get_sdl_byteorder()
获得 SDL 的字节顺序。
get_sdl_byteorder() -> int
获得 SDL 库的字节顺序。返回 LIL_ENDIAN 表示小端字节顺序;返回 BIG_ENDIAN 表示大端字节顺序。

Pygame 1.8 新添加的方法。

pygame.register_quit()
注册一个函数,这个函数将在 pygame 退出时被调用。
register_quit(callable) -> None
当调用 pygame.quit() 结束所有模块时,所有通过 register_quit() 方法注册过的函数将被调用。这一切都是自动执行的。
一般的 pygame 用户用不到这个方法。

pygame.encode_string()

对 unicode 或字节对象进行编码。
encode_string([obj [, encoding [, errors [, etype]]]]) -> bytes or None
obj:
传入 unicode 类型 -> 编码
传入 bytes 类型 -> 不变
传入其他类型 -> 返回 None
没有传递 obj 参数 -> 引起 SyntaxError 异常
encoding (string):如果存在则进行编码,默认是 unicode_escape。
errors (string):指定如何处理无法编码的内容,默认使用反斜杠(\)代替。
etype (exception type):指定编码错误引发的异常类型。默认为 UnicodeEncodeError,由 PyUnicode_AsEncodedString() 返回。对于默认的编码和错误值不应该有编码错误。
这个函数被用于编码文件路径的时候,支持使用关键字参数。

Pygame 1.9.2 新增加的方法(主要用于单元测试)。

pygame.encode_file_path()
将 unicode 或 bytes 对象编码为文件系统路径。
encode_file_path([obj [, etype]]) -> bytes or None
obj:
传入 unicode 类型 -> 编码
传入 bytes 类型 -> 不变
传入其他类型 -> 返回 None
没有传递 obj 参数 -> 引起 SyntaxError 异常
etype(异常类型):若给出,则出现异常时报相应编码错误,默认为 UnicodeEncodeError,由 PyUnicode_AsEncodedString() 返回。
这个函数被用于编码文件路径的时候,结果由 sys.getfilesystemencoding() 返回,支持使用关键字参数。

添加音乐
import pygame
filename=’/home/A.mp3’
pygame.mixer.music.load(filename)
pygame.mixer.music.play(loops=0, start=0.0)

import pygame
filename=’/home/pengtao/Music/b.mp3’
pygame.mixer.init()
pygame.mixer.music.load(filename)
pygame.mixer.music.play(1)
  
pygame.locals
  pygame.locals模块包括在你自己的模块作用域内使用的名字(变量),还包括事件类型、键和视频模式等的名字。在导入所有内容(from pygame.locals import *)时它用起来是很安全的。如果你知道自己需要的内容,也可以导入更加具体的内容(比如 from pygame.locals import FULLSEREEN)。
  
pygame.display
  pygame.display模块包括处理Pygame显示方式的函数,其中包括普通窗口和全屏模式。比如有这些函数:
   flip:更新显示。一般来说,当修改当前屏幕的时候需要经过两个步骤。首先,需要对get_surface函数返回的Surface对象进行所有需要的修改。然后调用pygame.display.flip更新显示  以反映你的修改。
   update:在只想更新屏幕一部分的时候使用update函数,而不是flip函数。它可以从RenderUpdates类的draw方法中返回的矩形列表一起使用。
   set_mode:设定显示的类型和尺寸。会返回一个Surface对象,代表了在桌面上出现的那个窗口,三个参数第一个为元祖,代表分 辨率(必须);第二个是一个标志位,具体意思见下  表,如果不用什么特性,就指定0;第三个为色深。

功能
FULLSCREEN
创建一个全屏窗口
DOUBLEBUF
创建一个“双缓冲”窗口,建议在HWSURFACE或者OPENGL时使用
HWSURFACE
创建一个硬件加速的窗口,必须和FULLSCREEN同时使用
OPENGL
创建一个OPENGL渲染的窗口
RESIZABLE
创建一个可以改变大小的窗口
NOFRAME
创建一个没有边框的窗口
   set_caption:设定Pygame程序的标题,当游戏以窗口模式运行时,显示为窗口的标题。
   get_surface:在调用pygame.display.flip或者pygame.display.blit前返回一个可用于画图的Surface对象。
   
pygame.font
  pygame.font模块包括Font函数。字体对象用于表现不同的字体,可以用于将文本生成为可以再Pygame中用作普通图像的图像。
  
pygame.sprite
  pygame.sprite模块包括两个非常重要的类:Sprite和Group。
  Sprite类是所有可视游戏对象的基类,有过游戏编程经验甚至只是玩过游戏的人应该都知道“精灵”这个词,其实Sprite就是精灵。为了实现自己的游戏对象,需要子类化Sprite,覆盖它的构造函数以设定image和rect属性(决定Sprite的外观和放置的位置),再覆盖update方法,在Sprite需要更新的时候可以调用。
  Group类的实例(和它的子类)用作Sprite对象的容器。一般来说,使用group类还是不错的作法。在一些简单的游戏中,只要创建名为sprites或者allsprites或者其他类似的组,然后将所有的Sprite对象添加到上面即可。当调用Group对象的update方法时,它就会自动调用所有Sprite对象的update方法。Group对象的clear方法用于清理它包含的所有Sprite对象(使用回调函数实现清理),draw方法可以用于绘制所有的Sprite对象。
  
pygame.mouse
  关于鼠标的模块,可以设置参数、获取信息等。如可以使用pygame.mouse.set_visible来设置光标是隐藏还是可见,用pygame.mouse.get_pos来获取鼠标的位置。
  
pygame.event
  pygame.event模块会追踪鼠标单击、鼠标移动、按键按下和释放等事件。使用pygame.event.get可以获取最近事件列表。
  
pygame.image
  这个模块用于处理保存在GIF、PNG或JPEG等文件内的图像。pygame.image.load函数用来读取图像文件,并且创建包括该图像的Surface对象。

----------窗口相关操作-----------

#创建窗口
window = pygame.display.set_mode([窗口宽,窗口高])

#设置窗口标题
pygame.display.set_caption(“窗口标题”)

#加载资源图片,返回图片对象
image = pygame.image.load(“res/game.ico”)
设置窗口图标
pygame.display.set_icon(image)

#指定坐标,将图片绘制到窗口
window.blit(image, (0, 0))

----------图像相关操作-----------

#加载图片文件,返回图片对象
image = pygame.image.load(“图片路径”)

#获得图片矩形对象 -> Rect(x, y, width, height)
默认情况下左上角的坐标是 (0, 0)
rect = image.get_rect(centerx=x, centery=y)

在原位置基础上,移动指定的偏移量 (x, y 增加)
rect.move_ip(num1, num2)

#判断两个矩形是否相交,相交返回True,否则返回False
flag = pygame.Rect.colliderect(rect1, rect2)

#将图片对象按指定宽高缩放,返回新的图片对象
trans_image = pygame.transform.scale(image, (WINDOWWIDTH, WINDOWHEIGHT))

----------事件相关操作-----------

常见事件类型:
QUIT 关闭窗口
KEYDOWN 键盘按键
#获得当前所有持续按键 bools_tuple

#获得所有事件的列表
event_list = pygame.event.get()

for event in event_list:
# 1. 鼠标点击关闭窗口事件
if event.type == pygame.QUIT:
print(“关闭了窗口”)
sys.exit()

# 2. 键盘按下事件
if event.type == pygame.KEYDOWN:

    # 判断用户按下的键是否是a键
    if event.key == pygame.K_a:
        print("按了 a ")

    if event.key == pygame.k_UP:
        print("按了 方向键上")
  1. 获得当前键盘所有按键的状态(按下,没有按下),返回bool元组
    pressed_keys = pygame.key.get_pressed()
    (0, 0, 0, 0, 1, 0, 0, 0, 0)

if pressed_keys[pygame.K_w] or pressed_keys[pygame.K_UP]:
print(“按了 w 键,或者 方向键上”)

----------音效相关操作-----------

加载背景音乐
pygame.mixer.music.load("./res/bg2.ogg")
#循环播放背景音乐
pygame.mixer.music.play(-1)
#停止背景音乐
pygame.mixer.music.stop()

加载音效
boom_sound = pygame.mixer.Sound("./res/baozha.ogg")
#播放音效
boom_sound.play()

boom_sound.stop()

三基色:Red Green Blue

0 ~ 255

-------- 文字显示操作 --------

#设置字体和大小
font = pygame.font.SysFont(‘SimHei’, 42)

#render(text(文本内容), antialias(抗锯齿), color(RGB)),返回文字对象
textobj = font.render(“飞机大战”, 1, (255, 255, 255))

#设置文字矩形对象位置
textrect = textobj.get_rect(centerx=300, centery=300)

#在指定位置绘制指定文字对象
window.blit(textobj, textrect)

猜你喜欢

转载自blog.csdn.net/Dream____Fly/article/details/88234892