pygame精灵组有哪些方法_python之pygame

本文详细介绍了pygame中的display、music、mixer、mask和sprite模块,包括display的初始化、窗口操作,music的加载与播放,mixer的声音管理,mask的创建与应用,以及sprite精灵组的管理与碰撞检测。这些内容涵盖了pygame库在游戏开发中的基本操作。
摘要由CSDN通过智能技术生成

一、display模块:pygame.didsplay的主要方法

对显示的控制。具有单独的Surface,可以包含在窗口中,也可以全屏。更改不会立即显示,必须选择两个翻转函数之一来更新实际显示。

显示原点在窗口左上方(x=0,y=0),向右下方增加。

设置display模式后,将在pygame事件队列中放置几个​​事件。当用户请求关闭程序时发送pygame.QUIT。

1.pygame.display.init()

初始化display模块

init() -> None

如果不初始化将无法使用,一般在调用更高级的pygame.init()之后会自动进行。多次调用无害,重复调用无效。
2.pygame.display.quit()

取消display模块初始化

quit() -> None

关闭整个display模块。所有的显示都将关闭。当程序关闭时,它也会自动处理。多次调用无害,重复调用无效。

3.pygame.display.set_icon()

改变窗口的小图标。

4b1f9a61b5e1fd5441c8e9e852a9e48a.png
窗口小图标
set_icon(Surface) -> None

示例:

icon = pygame.image.load("icon.png")
pygame.display.set_icon(icon) #将小图标改成指定的图像

4.pygame.display.set_caption()

设置窗口标题

set_caption(title, icontitle=None) -> None

示例:

pygame.display.set_caption("我是一只小松鼠")

5.pygame.display.set_mode()

初始化要显示的窗口和屏幕。

set_mode(size=(0, 0), flags=0, depth=0, display=0) -> Surface

size参数代表宽度和高度。flags是其它选项集合。depth颜色位数。

如果未传递尺寸或将其设置为(0,0),则创建的Surface将具有与当前屏幕分辨率相同的尺寸。通常最好不要传递depth参数。

示例:

# Open a window on the screen
screen_width=700
screen_height=400
screen=pygame.display.set_mode([screen_width,screen_height])

二、music模块:pygame.mixer.music的主要方法

1.pygame.mixer.music.load()

加载音乐

load(filename) -> None
load(object) -> None

加载音乐文件名或文件对象,为播放做准备。如果音乐正在播放它将被停止。这条语句不能播放音乐。

2.pygame.mixer.unload()

释放当前加载的音乐

unload()   

3.pygame.mixer.music.play()

播放音乐

play(loops=0, start=0.0) -> None

loops:循环次数。如果是5,则播放6次;如果是-1,无限循环

start:开始播放位置。mp3、ogg将位置表示时间(单位是秒)。如果无法设置起始位置,则传递startpos会引发NotImplementedError(无法执行错误)。

4.pygame.mixer.music.set_volume()

设置音量

set_volume(value) -> None

value的范围(0.0,1.0)。新音乐载入,音量重置。

三、mixer模块:pygame.mixer的主要方法

1.pygame.mixer.Sound

从一个文件或缓冲区对象创建一个新的声音对象

Sound(filename) -> Sound
Sound(file=filename) -> Sound
Sound(buffer) -> Sound
Sound(buffer=buffer) -> Sound
Sound(object) -> Sound
Sound(file=object) -> Sound
Sound(array=object) -> Sound

方法:

(1)play()

开始声音播放

play(loops=0, maxtime=0, fade_ms=0) -> Channel

必须选择一个音频通道。

loops参数控制声音在被第一次播放之后重复播放的次数。如果参数值为5,声音将播放一次,重复播放五次。如果是-1,则无限循环播放(可以用stop()来停止)

maxtime参数表示在给定的毫秒数之后停止播放。

fade_ms声音音量从0开始淡入。可以在淡入完成之前结束。

这个方法返回所选频道的Channel对象。

(2)stop()

停止声音播放

stop() -> None

这将停止声音在任何工作通道上的播放。

(3)set_volume()

设置声音音量

set_volume(value) -> None

会对正在播放的声音立即产生影响,也将影响在未来时刻播放的声音。

参数:value(float)--范围是[0.0,1.0]。如果小于0,音量不会改变;如果大于1,音量将被设置为1。

四、mask模块:pygame.mask的主要方法

pygame.mask.from_surface

用给定的surface创建一个mask

from_surface(Surface) -> Mask
from_surface(Surface, threshold=127) -> Mask

通过设置所有不透明像素而不设置透明像素,从给定surface创建mask对象。

返回:一个用给定的surface新创建的mask对象

返回类型:Mask

注意:这个函数用来为pygame.sprite.collide_mask()创建masks。

五、sprite模块:pygame.sprite的主要方法

1.pygame.sprite.Sprite()

可见游戏对象的简单基类

 Sprite(*groups) -> Sprite

2.pygame.sprite.Group()

一个容器类,保存和管理多种精灵对象。

Group(*sprites) -> Group

方法:

(1)add()

向组里添加精灵

add(*sprites) -> None

将任意数量的精灵添加到该组。只能添加还未在组里的精灵。每个精灵参数也可以是包含精灵的迭代器。

(2)remove()

从组中删除精灵

remove(*sprites) -> None

从组中删除任意数量的精灵,只能删除已经在组里的精灵。

3.pygame.sprite.spritecollide()

在组中查找与另一个精灵碰撞的精灵。

spritecollide(sprite,group,dokill,collided = None)-> Sprite_list

返回一个列表,其中包含一个组中与另一个精灵相交的所有精灵。碰撞点是通过比较每个精灵 的Spritre.rect属性来确定的。

dokill参数是一个布尔值。如果设置为True,则所有碰撞的精灵将从组中删除。

collided参数是一个回调函数,用于计算两个精灵是否发生碰撞。它应该将两个精灵作为值,并返回一个布尔值,表明它们是否发生碰撞。如果未通过碰撞,则所有精灵都必须具有“rect”值,该值是一个精灵区域的矩形,将用于计算碰撞。

collided的可调用项:

collide_rect, collide_rect_ratio, 
collide_circle, collide_circle_ratio, collide_mask

4.pygame.sprite.collide_mask()

用mask(蒙版)检测两个精灵之间是否发生碰撞

collide_mask(sprite1, sprite2) -> (int, int)
collide_mask(sprite1, sprite2) -> None

通过检测两个精灵的bitmasks是否重叠,来检测它们的碰撞。如果精灵有mask属性,则将其用作蒙版,否则从精灵的image来创建mask(使用pygame.mask.from_surface())。精灵必须具有rect属性,mask属性是可选的。

这个函数可作为collided的回调函数传递给组冲突函数(如spridecollode(),groupcollide())

注意:为了提高性能,为所有的精灵创建和设置mask属性,用于此函数的碰撞检测。否则,每次使用此函数都会创建新的masks。

注意:每次更改精灵的图像时都需要重新创建一个新的mask(例如,如果使用了新图像或旋转了现有图像)。

返回值:mask之间的第一个碰撞点,或者如果没有碰撞则是None

返回类型:元组(int,int)或NoneType

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值