2013-04-18 3 views
1

Так Скажем, у вас есть спрайты группа и вы добавили кучу вещей к нему:Удаления/Удаление первого N или N последнего из sprites.Group()

all_shelfs = pygame.sprite.Group() 
shelf_tracking_list = [] 

#making shelfs 
build_lvl = HEIGHT - 150 
#group A 
for i in xrange(100): 
    wid = random.randint(120,320) 
    pos = [random.randint(0, WIDTH-wid), random.randint(build_lvl-20, build_lvl), wid] 
    all_shelfs.add(Shelf(pos[0],pos[1], pos[2])) 
    build_lvl = build_lvl - 60 

#group B 
for i in xrange(100): 
    wid = random.randint(120,320) 
    pos = [random.randint(0, WIDTH-wid), random.randint(build_lvl-20, build_lvl), wid] 
    all_shelfs.add(Shelf(pos[0],pos[1], pos[2])) 
    build_lvl = build_lvl - 60 
#group C 
for i in xrange(100): 
    wid = random.randint(120,320) 
    pos = [random.randint(0, WIDTH-wid), random.randint(build_lvl-20, build_lvl), wid] 
    all_shelfs.add(Shelf(pos[0],pos[1], pos[2])) 
    build_lvl = build_lvl - 60 

shelf_tracking_list = all_shelfs.sprites() 

Как удалить группу Например, например? Это была первая группа, которую я добавил. Я заметил, что я не могу изменить группу с помощью этого shelf_tracking_list

ответ

1

Если вы отслеживании спрайтов в каждой группе, вы можете использовать функцию sprite.Group.remove(*sprites), чтобы удалить всю группу, как указано в документации здесь: http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Group.remove

# group A 
group_a = list() 
for i in xrange(100): 
    wid = random.randint(120,320) 
    pos = [random.randint(0, WIDTH-wid), random.randint(build_lvl-20, build_lvl), wid] 
    new_shelf = Shelf(pos[0], pos[1], pos[2]) 
    group_a.append(new_shelf) 
    build_lvl = build_lvl - 60 
all_shelfs.add(group_a) 

Затем, когда вы хотите, чтобы удалить всю группу из all_shelfs:

all_shelfs.remove(group_a) 
1

Поскольку вы аськи ng как удалить логические группы, а не только N элементов: В зависимости от вашей программы это может значительно упростить задачу поместить спрайт в несколько групп.

Вы можете разместить спрайт в нескольких группах, чтобы обратиться к тому же спрайту. Тогда, если вы kill() это, то удаляет его из всех групп. В противном случае remove(*groups) для удаления определенной группы.

for i in xrange(100): 
    wid = random.randint(120,320) 
    pos = [random.randint(0, WIDTH-wid), random.randint(build_lvl-20, build_lvl), wid] 
    shelf = Shelf(pos[0],pos[1], pos[2]) 
    all_shelfs.add(shelf) 
    shelfs_a.add(shelf) 
    build_lvl = build_lvl - 60 

#group B 
for i in xrange(100): 
    wid = random.randint(120,320) 
    pos = [random.randint(0, WIDTH-wid), random.randint(build_lvl-20, build_lvl), wid] 
    shelf = Shelf(pos[0],pos[1], pos[2]) 
    all_shelfs.add(shelf) 
    shelfs_b.add(shelf) 
    build_lvl = build_lvl - 60 

# ... 

# then to erase from both groups 
for shelf in shelfs_a: 
    shelf.kill() 
Смежные вопросы