pygame.sprite.Group

Group类,它只存储sprite对象 

 

复制代码
import pygame

pygame.init()
screen = pygame.display.set_mode((960, 800))
pygame.display.set_caption("pygame.sprite.Group")

class sprite(pygame.sprite.Sprite):

    def __init__(self, filepath):
        super().__init__()
        self.image = pygame.image.load(filepath).convert_alpha()
        self.rect = self.image.get_rect()
sprite_list = pygame.sprite.Group()  #定义精灵组
#pygame.sprite.RenderPlain与这个语句相同

sprite_list1 = pygame.sprite.Group()
sprite_list2 = pygame.sprite.Group()

for i in range(5):
    filepath='./图片/aa'+str(i)+'.png'
    sp = sprite(filepath)  #创建一个精灵
    sp.rect.x = 10  #精灵的位置
    sp.rect.y = 10
    #务必在Sprite添加到Groups之前调用基本初始值设定项
    sprite_list.add(sp)  #将精灵加入组
    #print(sprite_list)
    #<Group(76 sprites)>     76表示组内的精灵数

    sprite_list1.add(sp)

    sprite_list.update()  # 组更新
    #在组中的所有Sprite上调用update()方法
    # 如果没有在Group类中使用同名的方便方法,则无需使用此方法


#sprite_list.remove(sp)  #从组中删除指定的精灵
#<Group(75 sprites)>

#pygame.sprite.Sprite.kill(sp) #从所有组中删除指定的精灵
# 这不会改变关于Sprite状态的任何信息。 调用此方法后,可以继续使用Sprite,包括将其添加到Groups

#b=pygame.sprite.Sprite.alive(sp)  #指定精灵时候已经加入组(任何组都可以)
#当Sprite属于一个或多个组时返回True

b=pygame.sprite.Sprite.groups(sp)  #返回包含指定精灵的组的列表
#[<Group(76 sprites)>, <Group(76 sprites)>]

for i in sprite_list.__iter__():  #sprite_list.__iter__()  组中精灵集合的迭代器
    #print('xxx',i)
    pass

b= len(sprite_list)  #返回组内的精灵数

b=sprite_list.sprites()  #返回组中精灵的列表
#[<sprite sprite(in 2 groups)>, <sprite sprite(in 2 groups)>, <sprite sprite(in 2 groups)>, <sprite sprite(in 2 groups)>, <sprite sprite(in 2 groups)>]
#in 2 groups   表示这个精灵在两个组中

sprite_list2=sprite_list.copy()  #组复制

b=sprite_list.has(sp)  #组中是否包含指定精灵
#如果组包含所有给定的精灵,则返回True

#sprite_list2.empty()  #从该组中删除所有Sprite

print(b)


while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()

    sprite_list2.draw(screen)  # 将组内所有精灵渲染到screen上
    #Group.draw()方法要求每个Sprite都有一个Surface.image属性和一个Surface.rect
    #将包含的Sprite绘制到Surface参数



    pygame.display.update()
复制代码

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(3760)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2019-07-07 pyqt5-复合控件中的子控件
2019-07-07 第二节 热机的效率
点击右上角即可分享
微信分享提示