Pygame 官方文档 - pygame.sprite

pygame.sprite

带有基本游戏对象类的pygame模块
pygame.sprite.Sprite - 可见游戏对象的简单基类。
pygame.sprite.DirtySprite - 具有更多属性和功能的Sprite的子类。
pygame.sprite.Group - 用于保存和管理多个Sprite对象的容器类。
pygame.sprite.RenderPlain - 与pygame.sprite.Group相同
pygame.sprite.RenderClear - 与pygame.sprite.Group相同
pygame.sprite.RenderUpdates - 跟踪dirty更新的组子类
pygame.sprite.OrderedUpdates - RenderUpdates(渲染更新)按添加顺序绘制Sprite的子类。
pygame.sprite.LayeredUpdates - LayeredUpdates(分层更新)是一个精灵组,它处理图层并像OrderedUpdates(顺序更新)一样绘制。
pygame.sprite.LayeredDirty - LayeredDirty组用于DirtySprite对象。子类(分层更新)LayeredUpdates。
pygame.sprite.GroupSingle - 包含单个sprite的组容器。
pygame.sprite.spritecollide - 在与另一个精灵相交的组中查找精灵。
pygame.sprite.collide_rect - 使用rects检测两个精灵之间的碰撞。
pygame.sprite.collide_rect_ratio - 使用按比例缩放的rects检测两个精灵之间的碰撞。
pygame.sprite.collide_circle - 使用圆圈检测两个精灵之间的碰撞。
pygame.sprite.collide_circle_ratio - 使用按比例缩放的圆圈检测两个精灵之间的碰撞。
pygame.sprite.collide_mask - 使用蒙版在两个精灵之间进行碰撞检测。
pygame.sprite.groupcollide - 查找在两个组之间发生碰撞的所有精灵。
pygame.sprite.spritecollideany - 如果精灵与组中的任何内容相交,则进行简单测试。

        该模块包含几个在游戏中使用的简单类。有一个主要的Sprite类和几个包含Sprite的Group类。使用pygame时,这些类的使用完全是可选的。这些类相当轻量级,只为大多数游戏常见的代码提供了一个起始点。
        Sprite类旨在用作游戏中不同类型对象的基类。还有一个基本的Group类,它只存储sprite对象。游戏可以创建新类型的Group类,这些类在它们包含的特殊定制的Sprite实例上运行。
        基本的Sprite类可以将它包含的Sprite对象绘制到Surface对象。 Group.draw()方法要求每个Sprite都有一个Surface.image属性和一个Surface.rect。 Group.clear()方法需要这些相同的属性,并可用于擦除所有具有背景的Sprite。还有更高级的组:pygame.sprite.RenderUpdates()和pygame.sprite.OrderedUpdates()。
        最后,该模块包含多个碰撞功能。这些有助于在具有交叉边界矩形的多个组内查找精灵。要查找碰撞,Sprite对象必须分配Surface.rect属性。
        这些组旨在高效地删除和添加Sprite对象。它们还允许进行简单的测试,以查看Sprite对象中是否已存在Group中。给定的Sprite可以存在于任意数量的组中。游戏可以使用一些组来控制对象渲染,以及一组完全独立的组来控制交互或玩家移动。不要将类型属性或bool添加到派生的Sprite类,而应考虑将Sprite保留在有组织的Group中。这将允许在游戏中稍后更加容易的查找。
        Sprite和Groups使用add()和remove()方法管理它们之间的关系。对于它们的成员资格,这些方法可以接受单个或多个目标。这些类的默认初始值设定项还为初始成员资格采用单个或目标列表。从组中重复添加和删除相同的Sprite对象是安全的。
        虽然可以不从下面的Sprite和AbstractGroup类派生设计sprite和group类,但强烈建议您在添加Sprite或Group类时扩展它们。
精灵不是线程安全的。因此,如果使用线程,请自行锁定。
 

pygame.sprite.Sprite

可见游戏对象的简单基类。
Sprite(*groups) -> Sprite
pygame.sprite.Sprite.update - 控制精灵行为的方法
pygame.sprite.Sprite.add - 将精灵添加到组中
pygame.sprite.Sprite.remove - 从组中删除精灵
pygame.sprite.Sprite.kill - 从所有组中删除Sprite
pygame.sprite.Sprite.alive - 精灵属于任何组的检测
pygame.sprite.Sprite.groups - 包含此Sprite的组列表
可见游戏对象的基类。 派生类将要覆盖Sprite.update()并分配Sprite.image和Sprite.rect属性。 初始值设定项可以接受要添加的任意数量的Group实例。
在对Sprite进行子类化时,请务必在Sprite添加到Groups之前调用基本初始值设定项。 例如:

class Block(pygame.sprite.Sprite):

    #构建函数 传入颜色和它的x、y坐标
    def __init__(self, color, width, height):

       #调用父类(Sprite)的构建函数
       pygame.sprite.Sprite.__init__(self)

       #创建一个图像,用某个颜色填充
       #这也可以是从磁盘加载的图像
       self.image = pygame.Surface([width, height])
       self.image.fill(color)

       #获取具有图像尺寸的矩形对象
       #通过设置rect.x和rect.y的值来更新该对象的位置
       self.rect = self.image.get_rect()
pygame.sprite.Sprite.update()

控制精灵行为的方法
update(*args) -> None
此方法的默认实现不执行任何操作; 它只是一个方便的“钩子”,你可以覆盖。 Group.update()使用您提供的任何参数调用此方法。
如果没有在Group类中使用同名的方便方法,则无需使用此方法。
搜索pygame.sprite.Sprite.update的示例

pygame.sprite.Sprite.add()

将精灵添加到组中
add(*groups) -> None
可以将任意数量的Group实例作为参数传递。 Sprite将被添加到它还不是其成员的组中。
搜索pygame.sprite.Sprite.add的示例

pygame.sprite.Sprite.remove()

从组中删除精灵
remove(*groups) -> None
可以将任意数量的Group实例作为参数传递。 Sprite将从其当前所属的组中删除
搜索pygame.sprite.Sprite.remove的示例

pygame.sprite.Sprite.kill()

从所有组中删除Sprite
kill() -> None
Sprite将从包含它的所有组中删除。 这不会改变关于Sprite状态的任何信息。 调用此方法后,可以继续使用Sprite,包括将其添加到Groups。
搜索pygame.sprite.Sprite.kill的示例

pygame.sprite.Sprite.alive()

精灵属于任何组的检测
alive() -> bool
当Sprite属于一个或多个组时返回True。
搜索pygame.sprite.Sprite.alive的示例

pygame.sprite.Sprite.groups()

包含此Sprite的组列表
groups() -> group_list
返回包含此Sprite的所有组的列表。

  • 48
    点赞
  • 198
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
根据提供的引用内容,没有直接涉及到pygame.sprite.sprite()的介绍或演示。但是可以根据提供的引用内容介绍pygame.sprite模块的一些基本概念和用法。 pygame.sprite模块提供了一个用于处理精灵(sprite)的类和函数。精灵是游戏中的基本元素,通常是游戏中的角色、道具、场景等。pygame.sprite模块提供了一些用于处理精灵的类和函数,包括Sprite、Group、LayeredUpdates等。 Sprite类是所有精灵类的基类,它提供了一些基本的属性和方法,例如rect、image、update等。Group类是精灵组的基类,它提供了一些用于管理精灵的方法,例如add、remove、update等。LayeredUpdates类是对Group类的扩展,它提供了一些用于处理精灵层级关系的方法,例如move_to_front、move_to_back等。 在使用pygame.sprite模块时,通常需要先创建一个精灵类,然后创建一个精灵组,并将精灵添加到精灵组中。然后在游戏循环中,调用精灵组的update方法更新精灵状态,并调用精灵组的draw方法绘制精灵。 下面是一个简单的示例代码,演示了如何使用pygame.sprite模块创建精灵和精灵组,并将精灵添加到精灵组中: ```python import pygame # 定义精灵类 class MySprite(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.Surface((50, 50)) self.image.fill((255, 0, 0)) self.rect = self.image.get_rect() def update(self): self.rect.x += 1 # 初始化pygame pygame.init() # 创建窗口 screen = pygame.display.set_mode((640, 480)) # 创建精灵组 sprites = pygame.sprite.Group() # 创建精灵并添加到精灵组中 sprite = MySprite() sprites.add(sprite) # 游戏循环 running = True while running: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 更新精灵状态 sprites.update() # 绘制精灵 screen.fill((255, 255, 255)) sprites.draw(screen) # 刷新屏幕 pygame.display.flip() # 退出pygame pygame.quit() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值