2013-07-09 3 views
0

나는 하나의 마피아를 죽일 때 두 개가 더 나타나는 게임을 만들고 있습니다. 나는 당신이 하나의 폭도들을 죽일 때 두 개의 다른 사람들이 나타납니다. 그러나 오직 한 사람 만이 볼 수 있고 그것들과 같이 행동합니다. 그러면 다른 하나가 사라집니다. 어떻게하면 두 사람이 예상 한대로 행동 할 수 있습니까? 여기에 지금까지 무엇을 가지고 :파이 게임의 그룹 관리

[MOB 클래스]

class MOB(pygame.sprite.Sprite): 
    def __init__(self, location): 
     self.pos = [0,0] 
     self.image = ENEMY 
     pygame.sprite.Sprite.__init__(self) 
     self.rect = self.image.get_rect() 
     self.rect.left, self.rect.top = location 
     self.rect.right, self.rect.bottom = location 
     self.rect.center = location 
     self.speed = random 
     self.hp = 4 
    def update(self): 
     if self.hp == 0: 
      mobs.add(self) 
      self.image = ENEMY 
      self.pos = [0,0] 
      self.hp = 4 
    def moveH(self): 
     if self.rect.centerx >= Player.rect.centerx: 
      self.rect.left = self.rect.left - 4 
     elif self.rect.centerx <= Player.rect.centerx: 
      self.rect.left = self.rect.left + 4 

     def moveV(self): 
     if self.rect.centery <= Player.rect.centery: 
      self.rect.top = self.rect.top + 4 
     if self.rect.centery >= Player.rect.centery: 
      self.rect.top = self.rect.top - 4 

는 [추가 및 메인 루프에서 제거]

for Mob in mobs: 
    if Mob.hp == 0: 
     score = score + 1 
     Mob.kill() 
     new_mobs = MOB([50, 50]), MOB([60, 300]) 
     mobs.add(*new_mobs) 

[다시 그리기 및 메인 루프 이동]

for Mob in mobs: 
    Mob.moveV() 
    Mob.moveH() 
    screen.blit(Mob.image, Mob.rect) 

답변

0

mobs.remove (Mob) 대신 Mob.kill 을 사용해보세요. D

+0

죽이기 때문에 죽게되고, spriteGroups에 참조가 없다는 것을 확인하십시오. – ninMonkey

0
  1. 코드가 Rect의 너비와 높이를 지우고 있습니다. 당신이 중심의 좌표를 사용할 경우, 사용

    self.rect = self.image.get_rect() 
    self.rect.center = location 
    
  2. update()에서 mobs.add() 무엇입니까? 업데이트는 일반적으로 모든 프레임이라고하며, mobs는 스프라이트 그룹이라고 생각합니다.

  3. 귀하의 갱신 :

    군중에서 마피아에 대한

    : Mob.moveV() Mob.moveH() screen.blit (Mob.image, Mob.rect)

해야

mobs.update() 
mobs.draw(screen) 

체크 아웃이들 예를 수 https://stackoverflow.com/a/10418347/341744

+0

조금 더 게시 할 수 있습니까? 당신의 대답에 따라 그것을 바꿀 때, 두 몹은 두 개의 스폰 지점에 머물러 있으며, 점수 카운터 (나열되지 않음)는 계속 올라가서 내가 많은 놈들을 죽였다고 말합니다. – pepper5319

+0

또한, 내가 죽인 유일한 스프라이트는 사라집니다 ,하지만 게임에 따르면, 그 사람은 아직 거기에 있지만, 보이지 않는 사람 – pepper5319

+0

괜찮아, 두 사람이 나타나고, 내가 죽인 사람은 좋은 사람으로 갔지만 이제는 보이지 않는 사람이있는 창 안에서만 움직인다. – pepper5319

관련 문제