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