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()

原文地址:https://www.cnblogs.com/liming19680104/p/13260105.html