2013-04-18 3 views
1

은 그래서 당신이 스프라이트 그룹이 있다고 가정 해 봅시다 당신은 물건을 잔뜩 추가 :삭제/A sprites.Group에서 첫 번째 N 또는 마지막 N 제거()

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

을 나는 그룹을 삭제하려면 어떻게 예를 들면? 내가 처음 추가 한 그룹은 어느 것입니까? 난 정말 당신이 여기에 문서에 지정된대로 전체 그룹을 제거하기 위해 sprite.Group.remove(*sprites) 기능을 사용할 수있는 각 그룹에서 스프라이트 을 추적한다면이 shelf_tracking_list

답변

1

를 사용하여 그룹을 수정할 수 없습니다 발견 : 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

당신이 ASKI 것 때문에 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() 
관련 문제